[英]C# split string by multiple characters
我想这样分割一个字符串:
“ ---你好---你好-------你好---再见”
变成这样的数组:
“你好” ; “你好你好” ; 再见
我用以下命令尝试了它:
test.Split(new string[] {"---"}, StringSplitOptions.RemoveEmptyEntries);
但这是行不通的,它会将“ -------”分为3个“ ---- hello”。
编辑:
我无法修改文本,它是一种输入,在修改之前我不知道它的外观。
另一个示例是:
-例子-
---------示例文字--------
-示例2-
并且只应将带有3个连字符的连字符分开,而不将带有多个连字符的连字符分开。
您可以使用正则表达式拆分。 正则表达式使用负号(?!-)
仅匹配三个-
恰好。 另请参见在C#中使用Regex获取单词的完全匹配 。
string sentence = "---hello--- hello ------- hello --- bye";
var result = Regex.Split(sentence, @"(?<!-)---(?!-)");
foreach (string value in result) {
Console.WriteLine(value.Trim());
}
使用正则表达式查找令牌的解决方案:
(?<!-)---(?!-)
Console.WriteLine(String.Join(",", System.Text.RegularExpressions.Regex.Split("---hello--- hello ------- hello --- bye", "(?<!-)---(?!-)")))
我建议尝试Regex.Split
而不是string.Split
:
string source = "---hello1--- hello2 ------- hello3 --- bye";
var result = Regex
.Split(source, @"(?<=[^-]|^)-{3}(?=[^-]|$)") // splitter is three "-" only
.Where(item => !string.IsNullOrEmpty(item)) // Removing Empty Entries
.ToArray();
Console.Write(string.Join(";", result));
结果:
hello1; hello2 ------- hello3 ; bye
test.replace("------", "@@@")
我建议使用诸如“ / split”之类的中性字符。 比您可以使用test.Split(...)
而不用担心它会拆分您想要的其他内容。 您的代码现在看起来像这样:
string test = "hello\split hello ------- hello \split bye";
test.Split("\split", StringSplitOptions.RemoveEmptyEntries);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.