基于多个char分隔符拆分字符串

时间:2011-09-30 03:58:10

标签: c# .net string split

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

我想基于和\ n

拆分它

输出数组应为

4
6
8
9
4

修改:

现在我正在从控制台读取字符串,当我在控制台中输入如上所示的字符串时,在后面的代码中我得到"4,6,8\\n9,4"。现在我想使用"," and "\\n"进行拆分。我怎样才能改变表达方式?

5 个答案:

答案 0 :(得分:107)

使用string.Split(char [])

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

修改

如果您收到任何不必要的空项,请尝试以下操作。 String.Split Method (String[], StringSplitOptions)

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

<强> EDIT2

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

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

答案 1 :(得分:7)

另一种选择是使用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”一样 - 所以上面要显示一个点:有一种方法可以给猫皮肤。

快乐的编码。

答案 2 :(得分: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);
}

答案 3 :(得分:4)

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

以防万一你没有正确打印/看到它:

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

答案 4 :(得分:2)

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