C#のUri.IsWellFormedOriginalString()メソッドの使い方とサンプルコード
C#のUri.IsWellFormedOriginalString()メソッドは、Uriオブジェクトの構築に使用された文字列が整形式(well-formed)であるか、また追加のエスケープ処理が必要かどうかを判定するメソッドです。戻り値がtrueの場合、元の文字列は有効なURIとして正しく形成されており、それ以上エスケープする必要がないことを意味します。
構文
IsWellFormedOriginalString()メソッドの構文は以下のとおりです。
public bool IsWellFormedOriginalString ();
使用例
ここでは、Uri.IsWellFormedOriginalString()メソッドを実装した具体的な例を見てみましょう。以下のコードでは、2つのUriインスタンスを作成し、等価性の比較と整形式の判定を行っています。
using System;
public class Demo {
public static void Main(){
Uri newURI1 = new Uri("https://www.tutorialspoint.com/index.htm");
Console.WriteLine("URI = "+newURI1);
Uri newURI2 = new Uri("https://www.qries.com/");
Console.WriteLine("URI = "+newURI2);
if(newURI1.Equals(newURI2))
Console.WriteLine("Both the URIs are equal!");
else
Console.WriteLine("Both the URIs aren't equal!");
if(newURI1.IsWellFormedOriginalString())
Console.WriteLine("newURI1 is well formed!");
else
Console.WriteLine("newURI1 isn't well formed!");
}
}実行結果
上記のプログラムを実行すると、以下のような出力が得られます。
URI = https://www.tutorialspoint.com/index.htm URI = https://www.tutorialspoint.com/ Both the URIs aren't equal! newURI1 is well formed!
解説
この例では、まず2つの異なるURLからUriインスタンスを生成しています。Equals()メソッドによる比較では、両者のURIが異なるため「等しくない」という結果が出力されます。その後、IsWellFormedOriginalString()メソッドを呼び出すことで、newURI1の構築に使われた文字列「https://www.tutorialspoint.com/index.htm」が整形式であり、追加のエスケープが不要であることが確認できます。
このメソッドは、ユーザー入力や外部システムから受け取ったURL文字列の妥当性を検証したい場合に特に役立ちます。RFC 2396およびRFC 2732に準拠した形式かどうかをチェックすることで、不正なURIによるエラーを事前に防ぐことができます。
-
C#のTakeWhileメソッドの使い方をわかりやすく解説
C#のLINQに用意されているTakeWhile()メソッドを使うと、Predicate(述語)で指定した条件が成立している間、シーケンスの先頭から要素を取得することができます。 このメソッドは、条件を満たす限り先頭から順に要素を取り出し、最初に条件を満たさなくなった要素に到達した時点で処理を停止するという特徴があります。そのため、配列の途中に条件外の要素があると、それ以降の要素はたとえ条件を満たしていても取得されない点に注意が必要です。 TakeWhile()メソッドの基本的な使い方 まず、整数型の配列を宣言して初期化します。 int[] arr = { 25, 40, 65, 70 };
-
C#のGroupBy()メソッドとは?要素をグループ化する使い方を解説
GroupBy()メソッドとはC#のGroupBy()は、System.Linq名前空間に用意されている拡張メソッドの一つです。指定したキー値に基づいてコレクション内の要素をグループ化し、その結果をIEnumerable<IGrouping<TKey, TElement>>として返します。各グループにはKeyプロパティが割り当てられ、同じキーを持つ要素がひとつのまとまりとして扱われます。サンプルコードまず、次のような整数型の配列を用意します。int[] arr = { 2, 30, 45, 60, 70 };この配列に対してGroupBy()を使い、「50以下の要素」と