(このドキュメントは未整理です)
IgnoreSymbolsは、空白文字、句読点等の記号を無視して比較するように指定します。 これらの値や他の値と組み合わせて使用することも出来ます。 CompareOptions.IgnoreSymbolsの解説では
文字列比較において、空白文字、句読点、通貨記号、パーセント記号、算術記号、アンパサンドなどの記号を無視することを示します。
CompareOptions 列挙体
とされているものの、具体的にどの記号が無視される対象なのかは明記されていないようです。 また、.NET FrameworkとMonoでも実行結果は異なるようです。
CompareOptions.IgnoreSymbolsを指定して空白文字・句読点・記号等を無視して比較する
using System;
using System.Globalization;
using System.Threading;
class Sample {
static void Main()
{
Console.WriteLine(Thread.CurrentThread.CurrentCulture);
Compare("ABC", "\\A,B!C*", CompareOptions.None);
Compare("ABC", "\\A,B!C*", CompareOptions.IgnoreSymbols);
Compare("ABC", "A[ B ]C", CompareOptions.None);
Compare("ABC", "A[ B ]C", CompareOptions.IgnoreSymbols);
Console.WriteLine();
Compare("あいうえお", "あ い う/え・お", CompareOptions.None);
Compare("あいうえお", "あ い う/え・お", CompareOptions.IgnoreSymbols);
Compare("あいうえお", "(あ){い}(う)「え」【お】", CompareOptions.None);
Compare("あいうえお", "(あ){い}(う)「え」【お】", CompareOptions.IgnoreSymbols);
Compare("あいうえお", "¥あ~い!う☆え@お。", CompareOptions.None);
Compare("あいうえお", "¥あ~い!う☆え@お。", CompareOptions.IgnoreSymbols);
}
private static void Compare(string s1, string s2, CompareOptions options)
{
Console.WriteLine("{0} {1} : {2,2} ({3:f})", s1, s2, String.Compare(s1, s2, Thread.CurrentThread.CurrentCulture, options), options);
}
}
実行結果
ja-JP ABC \A,B!C* : 1 (None) ABC \A,B!C* : 0 (IgnoreSymbols) ABC A[ B ]C : 1 (None) ABC A[ B ]C : 0 (IgnoreSymbols) あいうえお あ い う/え・お : 1 (None) あいうえお あ い う/え・お : 1 (IgnoreSymbols) あいうえお (あ){い}(う)「え」【お】 : 1 (None) あいうえお (あ){い}(う)「え」【お】 : 1 (IgnoreSymbols) あいうえお ¥あ〜い!う☆え@お。 : 1 (None) あいうえお ¥あ〜い!う☆え@お。 : 1 (IgnoreSymbols)
実行結果
ja-JP ABC \A,B!C* : 1 (None) ABC \A,B!C* : 0 (IgnoreSymbols) ABC A[ B ]C : 1 (None) ABC A[ B ]C : 0 (IgnoreSymbols) あいうえお あ い う/え・お : 1 (None) あいうえお あ い う/え・お : 0 (IgnoreSymbols) あいうえお (あ){い}(う)「え」【お】 : 1 (None) あいうえお (あ){い}(う)「え」【お】 : 0 (IgnoreSymbols) あいうえお ¥あ~い!う☆え@お。 : 1 (None) あいうえお ¥あ~い!う☆え@お。 : 0 (IgnoreSymbols)