4

値を文字列区切り文字で分割する必要がある文字列があります。たとえば、区切り文字が「at」の場合、文字列値のみを正確な「at」キーワードで分割します。以下は私のサンプル文字列値です

 var sampleStr= "at Metadata at quota at what at batter";

以下のコードを使用すると、「at」が含まれる単語も分割されます。

var result= sampleStr.Split(new string[] { "at" }, StringSplitOptions.None);

私が欲しい結果は、組み合わせると「メタデータクォータ何バッター」になる配列です。

助けてください。

4

4 に答える 4

3

多分:

IEnumerable<string> wordsWithoutAt = sampleStr.Split()
    .Where(w => !StringComparer.OrdinalIgnoreCase.Equals(w, "at"));
string result = string.Join(" " , wordsWithoutAt);

デモ

StringComparer.OrdinalIgnoreCase大文字と小文字が問題になる場合は、その部分を に置き換え!= "at"ます。

于 2013-03-20T09:53:47.713 に答える
2
 splitted = Regex.Split(text,@"\bat\s*\b"); 

\b は単語境界を示します。\s* は、"at" の後の空白文字に一致します。

splitted : string [] = [|""; "Metadata "; "quota "; "what "; "batter"|]

空のスペースが必要ない場合は、以下のように試してください...

List<string> splitted = Regex.Split(phrase, @"\bat\s*\b",StringSplitOptions.RemoveEmptyEntries);

splitted : string [] = [| "Metadata "; "quota "; "what "; "batter"|]
于 2013-03-20T10:02:14.973 に答える
0

これは非常に言語であり、文字列の可能な構造に固有であるため、これに関する信頼できる解決策はありません。

簡単にするために、 " at "at前後にスペースを入れて)で分割することを考えるかもしれませんが、これで考えられるすべての問題が解決されるわけではありません。

例:

"I was loooking at the tree"、ここでの「で」は区切り記号ではなく、実際のフレーズ内の単語であるため、失敗します。

于 2013-03-20T09:49:24.190 に答える
0

周囲の空白を利用する必要があります....

まず、元のテキストを空白で囲み、開始および/または終了の「at」に対処します。

sampleStr = " " + sampleStr + " ";

次に、次のように分割しますか。

var result = sampleStr.Split(new string[] { " at " }, StringSplitOptions.RemoveEmptyEntries);

その後、必要な結果が得られます。

于 2013-03-20T09:55:34.137 に答える