c#regex.split无法处理chrome

时间:2014-05-13 15:54:30

标签: c# regex

我使用下面的代码从多行asp:textbox

中检索行
string[] SerialNumbers = Regex.Split(txtSerials.Text.Trim(), "\r\n");

它在IE中按预期工作,但在Chrome中它没有,请参考下面的示例:

IE:

SerialNumbers[0]="Line1"
SerialNumbers[1]="Line2"

铬:

SerialNumbers[0]="Line1\nLine2"

4 个答案:

答案 0 :(得分:4)

您是否尝试过标准化文本框中的换行符:

string[] SerialNumbers = Regex.Split(
    txtSerials.Text
       .Replace("\r\n", "\n")
       .Trim(),
    "\n");

当常规String.Split足够时,您还使用正则表达式:

string [] SerialNumbers = txtSerials.Text
   .Replace("\r\n", "\n")
   .Trim()
   .Split('\n');

答案 1 :(得分:2)

你可以在字符串上使用split方法。

string [] SerialNumbers = txtSerials.Text
    .Trim()
    .Split(new string[] { "\r\n", "\n" }, StringSplitOptions.RemoveEmptyEntries);

答案 2 :(得分:1)

将正则表达式更改为\r?\n,因此它适用于\r\n(CR + LF,DOS / Windows标准)和\n(仅限LF,Unix标准)

从您看到的结果来看,Chrome似乎正在使用后者。

答案 3 :(得分:-1)

到目前为止,答案有两个主题,我怀疑最好的方法是以下列方式使用这两个主题:

            var serialText = new StringBuilder();

        serialText.Append("Foo\n");
        serialText.Append("Bar\r");
        serialText.Append("Baz\r\n");
        serialText.AppendFormat("Pok{0}", Environment.NewLine);
        serialText.AppendLine("Zok");

        string[] serials = serialText.ToString().Split(Environment.NewLine.ToCharArray());

        foreach (var s in serials)
            Console.WriteLine(s);

        Console.ReadKey();

这将保持便携性以及您所陈述的业务需求。