C#按多个字符拆分字符串
我想像这样拆分一个字符串: “---你好---你好-----你好---再见” 进入如下数组: “你好”;“你好------你好”;“再见” 我用这个命令试过了:C#按多个字符拆分字符串,c#,regex,C#,Regex,我想像这样拆分一个字符串: “---你好---你好-----你好---再见” 进入如下数组: “你好”;“你好------你好”;“再见” 我用这个命令试过了: test.Split(new string[] {"---"}, StringSplitOptions.RemoveEmptyEntries); 但这不起作用,它将“-----”拆分为3个this“-----hello” 编辑: 我不能修改文本,这是一个输入,我不知道它看起来如何,然后我必须修改它 另一个例子是: ---范例--- -
test.Split(new string[] {"---"}, StringSplitOptions.RemoveEmptyEntries);
但这不起作用,它将“-----”拆分为3个this“-----hello”
编辑:
我不能修改文本,这是一个输入,我不知道它看起来如何,然后我必须修改它
另一个例子是:
---范例---
---------示例文本--------
---例2---
而且它应该只拆分带有3个连字符的,而不是带有更多连字符的
test。替换(“------”,“@@@@@@”)
test。替换(“------”,“@@@@@@”)
我建议使用中性字符,如“/split”或类似的字符。您可以使用
test.Split(…)
而不用担心它会分割您想要的其他内容。
您的代码现在看起来如下所示:
string test = "hello\split hello ------- hello \split bye";
test.Split("\split", StringSplitOptions.RemoveEmptyEntries);
我建议使用中性字符,如“/split”或类似的字符。您可以使用
test.Split(…)
而不用担心它会分割您想要的其他内容。
您的代码现在看起来如下所示:
string test = "hello\split hello ------- hello \split bye";
test.Split("\split", StringSplitOptions.RemoveEmptyEntries);
我建议尝试
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));
我建议尝试
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));
您可以使用正则表达式拆分。正则表达式使用一个负前瞻
(?!-)
来只精确匹配三个-
。另见
string句子=“---你好---你好-----你好---再见”;
var result=Regex.Split(句子,@)(?您可以使用Regex Split。Regex使用负前瞻(?!-)
仅精确匹配三个-
。另请参阅
string句子=“---你好---你好-----你好---再见”;
var result=Regex.Split(句子,@“(?使用Regex查找令牌的解决方案:
(?<!-)---(?!-)
Console.WriteLine(String.Join(",", System.Text.RegularExpressions.Regex.Split("---hello--- hello ------- hello --- bye", "(?<!-)---(?!-)")))
(?使用regex查找代币的解决方案:
(?<!-)---(?!-)
Console.WriteLine(String.Join(",", System.Text.RegularExpressions.Regex.Split("---hello--- hello ------- hello --- bye", "(?<!-)---(?!-)")))
(?这很正常。-----包含---@RegisPortalez是的,但这就是问题所在,我想像这样拆分它,即使它包含它。字符串。拆分在这里不是正确的选择。它不能做你想做的。我想正则表达式将是你的朋友。你有其他几个例子吗?有人可以向你提出只适用于给定exa的解决方案例如。当我们不知道字符串的哪些部分可以更改时,很难提供可靠的解决方案。@我们有正则表达式的解决方案吗?我真的很不擅长。这很正常。------包含。------RegisPortalez是的,但这就是问题所在,我想像这样拆分它,即使它包含它。字符串。拆分在这里不是正确的选择。它不能满足你的要求。我认为正则表达式将是你的朋友。你有其他几个例子吗?有人可以向你提出只适用于给定例子的解决方案。当我们不知道字符串的哪些部分可以更改时,很难提供可靠的解决方案。@swe你有正则表达式的解决方案吗?我真的不擅长。4的序列呢,6,7,8等?问题是我不知道字符串包含多少字符,每次输入都可能不同,因此解决方案对我不起作用。那么4,6,7,8等序列呢?问题是我不知道字符串包含多少字符,每次输入都可能不同,所以解决方案对我不起作用。你是在假设该OP可以选择更改输入,我在这里非常怀疑。@DavidG确切地说,我不能这样做。您假设OP可以选择更改输入,我在这里非常怀疑。@DavidG确切地说,我不能这样做。这正是我要找的,谢谢:)这正是我要找的,谢谢:)相同的答案,相同的时间:)相同的答案,相同的时间:)