newb の質問で申し訳ありませんが、C# は私の最初の言語ではありません。
句読点を考慮して、特定のコンテンツ内の単語間のすべての区切り記号のインデックス リストを作成しようとしています。Regex \b (単語「境界」) を使用したいと思っていましたが、予期していなかったあらゆる種類のものに一致しています。ここに私が書いた方法があります:
internal static IList<int> GetBreakIndexesInContent(string content)
{
IList<int> indices = new List<int>();
if (content != null)
{
foreach (Match match in Regex.Matches(content, @"\b"))
{
Console.WriteLine("INDEX:[" + match.Index + "] CHAR:[" + content.Text[match.Index] + "] UNICODE:[" + (int)content.Text[match.Index] + "]");
indices.Add(match.Index);
}
}
return indices;
}
次の 100 文字の文字列があるとします。
"Lorem ipsum dolor sit amet, tritani quaestio suscipiantur mea ea, duo et impedit facilisi evertitur."
私のメソッドは、長さが 14 要素のリストを生成することを期待しています。最初のインデックスは位置 5、2 番目の位置は 11 というようになります (位置 26 と 64 のコンマ、および 99 のピリオドは無視します)。代わりに、これは私が得ている出力です:
//COUNT: [30]
INDEX:[0] CHAR:[L] UNICODE:[76]
INDEX:[5] CHAR:[ ] UNICODE:[32]
INDEX:[6] CHAR:[i] UNICODE:[105]
INDEX:[11] CHAR:[ ] UNICODE:[32]
INDEX:[12] CHAR:[d] UNICODE:[100]
INDEX:[17] CHAR:[ ] UNICODE:[32]
INDEX:[18] CHAR:[s] UNICODE:[115]
INDEX:[21] CHAR:[ ] UNICODE:[32]
INDEX:[22] CHAR:[a] UNICODE:[97]
INDEX:[26] CHAR:[,] UNICODE:[44]
INDEX:[28] CHAR:[t] UNICODE:[116]
INDEX:[35] CHAR:[ ] UNICODE:[32]
INDEX:[36] CHAR:[q] UNICODE:[113]
INDEX:[44] CHAR:[ ] UNICODE:[32]
INDEX:[45] CHAR:[s] UNICODE:[115]
INDEX:[57] CHAR:[ ] UNICODE:[32]
INDEX:[58] CHAR:[m] UNICODE:[109]
INDEX:[61] CHAR:[ ] UNICODE:[32]
INDEX:[62] CHAR:[e] UNICODE:[101]
INDEX:[64] CHAR:[,] UNICODE:[44]
INDEX:[66] CHAR:[d] UNICODE:[100]
INDEX:[69] CHAR:[ ] UNICODE:[32]
INDEX:[70] CHAR:[e] UNICODE:[101]
INDEX:[72] CHAR:[ ] UNICODE:[32]
INDEX:[73] CHAR:[i] UNICODE:[105]
INDEX:[80] CHAR:[ ] UNICODE:[32]
INDEX:[81] CHAR:[f] UNICODE:[102]
INDEX:[89] CHAR:[ ] UNICODE:[32]
INDEX:[90] CHAR:[e] UNICODE:[101]
INDEX:[99] CHAR:[.] UNICODE:[46]
単純 " "
に ASCII 32 のフィルタリングのみを試みているわけではない理由は、すべての単語の間に必ずしも空白を使用していない外国語に対応する必要があるためです。また、意図せずに複数のスペースを個々の「セパレーター」としてキャプチャしたくないためです。
真の単語分離のための優れた標準キャッチオールになることを本当に望ん\b
でいましたが、そうではないようです. 私は「自分自身を転がす」ことができましたが、C# にこの問題を処理するための何らかの機能が既にある場合は、車輪を再発明する手間を省けることを望んでいました。
もちろん、どんな助けでも大歓迎です。
ありがとう、グレッグ。