我真的不习惯c#中的split string方法,我想知道怎么没有多个char函数分割?
我试图尝试使用正则表达式将此字符串拆分为下面,但最终却令人沮丧。 有人可以帮帮我吗?
基本上我想将下面的字符串拆分为
aa**aa**bb**dd^__^a2a**a2a**b2b**dd^__^
到
aa**aa**bb**dd
a2a**a2a**b2b**dd
然后再进入
aa
aa
bb
dd
a2a
a2a
b2b
dd
谢谢!
答案 0 :(得分:10)
您可以使用string[]
进行拆分。有几个overloads。
string[] splitBy = new string[] {"^__^"};
string[] result = "aa*aa*bb*dd^__^a2a*a2a*b2b*dd^__^".Split(splitBy, StringSplitOptions.None);
// result[0] = "aa*aa*bb*dd", result[1] = "a2a*a2a*b2b*dd"
答案 1 :(得分:7)
您正在寻找this overload:
someString.Split(new string[] { "^__^" }, StringSplitOptions.None);
我永远不明白为什么没有String.Split(params string[] separators)
但是,您可以将其编写为扩展方法:
public static string[] Split(this string str, params string[] separators) {
return str.Split(separators, StringSplitOptions.None);
}
答案 2 :(得分:2)
var split = @"aa**aa**bb**dd^__^a2a**a2a**b2b**dd^__^".Split(new string[] {"^__^"}, StringSplitOptions.RemoveEmptyEntries);
foreach(var s in split){
var split2 = s.Split(new string[] {"**"}, StringSplitOptions.RemoveEmptyEntries);
}
答案 3 :(得分:1)
这将为您提供包含所需值的IEnumerable<IEnumerable<string>>
。
string[] split1 = new[] { "^__^" };
string[] split2 = new[] { "**" };
StringSplitOptions op = StringSplitOptions.RemoveEmptyEntries;
var vals = s.Split(split1,op).Select(p => p.Split(split2,op).Cast<string>());
如果您希望ToList()
或List<List<string>>
为锯齿状数组
ToArray()
答案 4 :(得分:0)
其中一个怎么样:
string.Join("**",yourString.Split("^__")).Split("**")
yourString.Replace("^__","**").Split("**")
您必须检查最后一项,在您的示例中,它将是一个空字符串。
答案 5 :(得分:0)
如前所述,您可以将字符串数组传递给Split方法。以下是基于您最近编辑问题的代码的外观:
string x = "aa**aa**bb**dd^__^a2a**a2a**b2b**dd^__^";
string[] y = x.Split(new string[]{"^__^"},StringSplitOptions.None);
string[] z = y[0].Split(new string[]{"**"},StringSplitOptions.None);
答案 6 :(得分:0)
有效的VB.NET版本。
模块模块1
Sub Main()
Dim s As String = "aa**aa**bb**dd^__^a2a**a2a**b2b**dd^__^"
Dim delimit As Char() = New Char() {"*"c, "^"c, "_"c}
Dim split As String() = s.Split(delimit, StringSplitOptions.RemoveEmptyEntries)
Dim c As Integer = 0
For Each t As String In split
c += 1
Console.WriteLine(String.Format("{0}: {1}", c, t))
Next
End Sub