[C#][VB.NET] 正規表現でHTMLのタグの要素と属性を取得する
正規表現でHTML(XML)から指定のデータを取得したい C#/VB.NETでHTMLから指定タグの値や属性を取得するには正規表現が使えます。LINQ to XMLでもHTML(XML)から要素や属性の操作が可能ですが、不正なXMLドキュメントの場合にはうまく使えません。 Webページをスクレイピングする場合などは、必ずしも正しいHTMLとは限りません。閉じタグが抜けていたり、Javascript […]
Web備忘録 プログラミングを中心に技術的な事柄を忘れないように書き残します。
正規表現でHTML(XML)から指定のデータを取得したい C#/VB.NETでHTMLから指定タグの値や属性を取得するには正規表現が使えます。LINQ to XMLでもHTML(XML)から要素や属性の操作が可能ですが、不正なXMLドキュメントの場合にはうまく使えません。 Webページをスクレイピングする場合などは、必ずしも正しいHTMLとは限りません。閉じタグが抜けていたり、Javascript […]
NULL(Nothing)の扱いについて C#/VB.NETにおいて、オブジェクトの中身がNULL(Nothing)の場合、そのオブジェクトを参照すると、NullReferenceExceptionの例外が発生してしまいます。つまり参照前にNULL判定をしてやる必要があります。 C#/VB.NETには、NULLの扱いについて、便利な演算子・構文がいろいろと追加されています。 NULL条件演算子(? […]
端数処理 C#およびVB.NETでの端数処理の方法についてまとめました。 数値等に対する処理(数学関連の機能)は、System.Mathクラスを利用します。 端数処理もそれぞれ用意されているのでそれを利用することになりますが、特に四捨五入と切り上げの処理については注意が必要です。 結論 結論を先にまとめてしまうと、端数処理はそれぞれ次のメソッドを使用することで対応できます。 切り上げ Math.C […]
XMLとJSONを相互に変換する方法 JSON.NET を使えばXML形式のデータと、JSON形式のデータを相互に変換することが簡単にできます。Nugetで JSON.NET と検索してインストールすれば準備完了です。 XML・JSONの相互変換ツールで動作確認ができます。 仮に次のXMLとJSONを相互に変換します。 XML <?xml version="1.0" en […]
非同期制御について C#(VB.NET)で非同期処理の制御を行う場合、 async/await を使用するのが現在の主流です。 async/await を使用することでUIの応答を止めることなく処理を行えるので、ユーザビリティが向上します。 スレッドとスレッドプール スレッド(thread:糸、筋)とは一連の処理の流れを意味します。スレッドが一つ(シングルスレッド)の場合、複数の処理を上から順に実 […]
イテレータとは 英語で iterate は、繰り返しを意味します。つまりイテレータは「繰り返すためのもの」、みたいな意味でしょうか。 イテレータは、C#(.NET Framework)では列挙子と呼ばれ、IEnumeratorインターフェイスによってあらわされます。 イテレータを使うことで、コレクションクラスに対し要素を列挙することができるようになります。 つまり簡単に言うとforeach構文で処 […]
Listの中身をまるっとコピーする Listの中身をまるっと別のリストにコピーしたいとき、単純にリストを代入すると参照渡しになってしまいます。 これが配列だと、CopyTo メソッドを使ってやればいいのですが、Listだと同じものがありません。 下の例ではlist1を代入したlist2に追加した内容が、list1にも反映されています。 var list1 = new List<string& […]
LINQ to XML とは LINQ to XML は、.NET Framework プログラミング言語から XML を操作できるようにする、LINQ に対応したメモリ内 XML プログラミング インターフェイスです。 … LINQ to XML の最も重要な利点は、統合言語クエリ (LINQ) と統合されていることです。この統合により、メモリ内の XML ドキュメントに対するクエリ […]
LINQのAggregateとは LINQを使った畳み込み(fold)の方法を紹介します。畳み込みにはAggregateを使います。Aggregateは「集約」や「集める」といった意味を持ちます。 Aggregateはどのような処理かというと、シーケンスにアキュムレータ関数を適用する物らしいです。ざっくり言うと データから1つの要素を取り出し … 取り出した要素と累積値(アキュムレータ […]
LINQでデータを連結させる方法 LINQを使い複数のデータソースを連結させることができます。SQLでいうところのUNIONがLINQでもUnion、UNION ALLに該当するのがConcatです。 まずはUnionで配列を連結させてみます。 // データ string[] data1 = { "太郎", "次郎" }; string[] data2 = { "三郎", "四郎", "五郎" } […]