文字列に特定の絵文字が含まれているかどうかを確認する方法を見つけようとしています。たとえば、次の 2 つの絵文字を見てください。
自転車: http://unicode.org/emoji/charts/full-emoji-list.html#1f6b4
米国国旗: http://unicode.org/emoji/charts/full-emoji-list.html#1f1fa_1f1f8
自転車乗りはU+1F6B4
で、米国旗はU+1F1FA U+1F1F8
です。
ただし、確認する絵文字は、次のような配列で提供されます。文字列には数値のみが含まれます。
var checkFor = new string[] {"1F6B4","1F1FA-1F1F8"};
これらの配列値を実際の Unicode 文字に変換し、文字列にそれらが含まれているかどうかを確認するにはどうすればよいですか?
Bicyclist では何かが機能しますが、米国の旗では困惑しています。
サイクリストの場合、次のことを行っています。
const string comparisonStr = "..."; //some string containing text and emoji
var hexVal = Convert.ToInt32(checkFor[0], 16);
var strVal = Char.ConvertFromUtf32(hexVal);
//now I can successfully do the following check
var exists = comparisonStr.Contains(strVal);
ただし、複数のコード ポイントがあるため、これは米国旗では機能しません。