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);
我想要的结果是一个数组,如果组合起来;元数据配额是什么;。
请帮忙。
也许:
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);
然后你就得到了你想要的结果。