C#按字符串拆分[]分隔符仅匹配精确单词

本文关键字:单词 分隔符 字符串 拆分 | 更新日期: 2023-09-27 18:04:45

我有一个字符串,它的值应该用字符串分隔符分隔。例如,我的分隔符是";在";,我只想用精确的"0"来分割字符串值;在";关键字。下面是我的示例字符串值

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

如果我使用下面的代码;在";在它们中也是分裂的。

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

我想要的结果是一个数组,如果组合起来;元数据配额是什么;。

请帮忙。

C#按字符串拆分[]分隔符仅匹配精确单词

也许:

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

演示

如果情况重要,则用!= "at"替换StringComparer.OrdinalIgnoreCase部件。

 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"|]

这方面没有任何可靠的解决方案,因为这是非常的语言,并且字符串可能是特定于结构的。

为了使更容易,您可以考虑用" at "(前后有空格的at(进行拆分,但这不会重新解决所有可能的问题。

示例:

"I was loooking at the tree"将失败,因为这里的"at"不是delimeter,而是真实短语中的单词

您应该利用周围的空白。。。。

首先,用一些空白来包装你的原始文本,以应对开头和/或结尾的"at":

sampleStr = " " + sampleStr + " ";

那么你是这样分裂的吗:

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

然后你就得到了你想要的结果。