基于多个字符分隔符分割字符串


73

我有一个字符串“ 4,6,8 \ n9,4”

我想根据和\ n进行拆分

输出数组应为

4
6
8
9
4

编辑:

现在我从控制台读取字符串,当我在控制台中输入上面的字符串时,我后面的代码为"4,6,8\\n9,4"。现在我想使用拆分"," and "\\n"。如何更改表达方式?

Answers:


131

使用string.Split(char [])

string strings = "4,6,8\n9,4";
string [] split = strings .Split(new Char [] {',' , '\n' });

编辑

如果发现任何不必要的空项目,请尝试以下操作。String.Split方法(String [],StringSplitOptions)

string [] split = strings .Split(new Char [] {',' , '\n' }, 
                                 StringSplitOptions.RemoveEmptyEntries);

编辑2

这适用于您更新的问题。将所有必要的分割字符添加到中char []

string [] split = strings.Split(new Char[] { ',', '\\', '\n' },
                                 StringSplitOptions.RemoveEmptyEntries);

我无法使用它.Split(new Char[]{'?='}),但是这样做可以帮助stackoverflow.com/questions/1126915/…
仍然是

1
@CSharper您做错了。您应该做.Split(new Char[]{'?','='})
zdimension '16

有没有办法知道数组中的哪个字符用于分割字符串?(假设您需要知道这个值?)
罗伯特·格林

@RobertGreenMBA没有标准方法。您可以对每个字符使用分割方法。根据您的要求创建自己的方法。
CharithJ

9

另一种选择是使用Regex.Split。当分割序列更复杂时,这很有用。例如,如果空格也可以是分割定界符的一部分,例如:

"4,6,8 , 9\\n\\n4"

然后:

using System.Text.RegularExpressions;
var i = "4,6,8 , 9\n\n4";
var o = Regex.Split(i, @"[,\s\n]+");
// now o is:
// new string[] { "4", "6", "8", "9" }

请注意,使用的正则表达式是“更多接受的”-它忽略了\ n之间的空“空格”,并且将接受“ 4 6 8 9 4”相同的内容-因此以上内容表明了这一点:还有更多而不是用一种方法给猫皮。

快乐的编码。


6
var s = "4,6,8\n9,4";
var split = s.Split(new char[]{',', '\n'});

但这一定是骗子...

编辑:解决评论。

这段代码:

static void Main(string[] args)
{
    var s = "4,6,8\n9,4";

    foreach (var a in s.Split(new char[] { ',', '\n' }))
        System.Diagnostics.Debug.WriteLine(a);
}

输出此:

4
6
8
9
4

编辑:从控制台读取输入是不同的。 \n手动输入时有所不同。

static void Main(string[] args)
{
    var s = "4,6,8\\n9,4";

    foreach (var a in s.Split(new string[] { ",", "\\n" }, StringSplitOptions.RemoveEmptyEntries))
        System.Diagnostics.Debug.WriteLine(a);
}

4
string tosplit = "4,6,8\n9,4";
var split = tosplit.Split(new Char [] {',', '\n' });

以防万一您无法正确打印/看到它:

split.ToList().ForEach(Console.WriteLine);

@Nithesh Hebri-它为我提供了所需的正确输出。
manojlds 2011年

2

你能做一个string.Replace('\ n',',')跟在string.split(',')之后吗?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.