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", 会失败,因为这里的“at”不是分隔符,而是真实短语中的一个词

于 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 回答