2010-03-12 128 views
1

比方说,我有这样的字符串变种:分割字符串VAR

string strData = "1|2|3|4||a|b|c|d" 

然后,我做一个分割:

string[] strNumbers = strData.Split("||"); //something like this, I know It's not this simple 

我需要两个独立的部分,每一个都包含这样的:

//strNumbers -> {"1","2","3","4"},{"a","b","c","d"} 

因此,在那之后,我可以这样做:

string[] strNumArray = strNumbers[0].Split('|'); 
//strNumArray -> '1', '2', '3', '4' 

与其他部分(字母)相同。

可能吗?使这个双重分裂与相同的字符,但第一次重复两次?

谢谢。

PD。我正在使用C#。

回答

5

它会正常工作,你的语法刚刚关闭。

首先,您的声明已关闭。你想要的是类型上的[],而不是名称。

其次,在String.Split上,有一个重载需要一个字符串数组和一个StringSplitOptions。只是想做“||”会调用param char overload,这是无效的。

那么试试这个:

string strData = "1|2|3|4||a|b|c|d"; 
string[] strNumbers = strData.Split(new[] {"||"}, StringSplitOptions.None); 
string[] strNumArray = strNumbers[0].Split('|'); 

您可以更改StringSplitOptions到RemoveEmptyEntries,如果你想要的。

+0

是啊,你说得对,我声明的错误,但是这只是我急着键入问题的原因。我编辑了这个问题并纠正了声明,以避免失误。 – lidermin 2010-03-12 18:43:00

+0

你是对的!非常感谢,我尝试了一切,但:新[] {'||'}!哈哈。再次感谢。 – lidermin 2010-03-12 18:44:55

-1
Dim s As String = "1|2|3|4|5|6|7||a|b|c|d|e|f" 
    Dim nums() As String = s.Split(New String() {"||"}, StringSplitOptions.None)(0).Split("|") 
    Dim strs() As String = s.Split(New String() {"||"}, StringSplitOptions.None)(1).Split("|") 
+0

这些分割呼叫都不是可编译的。 '“||”'不符合'params char'重载,你不能使用一个字符串做一个String.Split,除非你让它成为一个数组并传入一个StringSplitOption。 – Brandon 2010-03-12 18:43:56

+0

谢谢!我有点分心并修改它,尽管它是VBNET。 =) – 2010-03-12 19:40:46

0
在.net 3.5

string strData = "1|2|3|4||a|b|c|d"; 
var s1 = strData.Split(new string[] { "||" }, StringSplitOptions.None); 
var numbers = s1[0].Split('|'); 
var letters = s1[1].Split('|');