我使用下面的代码从多行asp:textbox
中检索行string[] SerialNumbers = Regex.Split(txtSerials.Text.Trim(), "\r\n");
它在IE中按预期工作,但在Chrome中它没有,请参考下面的示例:
IE:
SerialNumbers[0]="Line1"
SerialNumbers[1]="Line2"
铬:
SerialNumbers[0]="Line1\nLine2"
答案 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();
这将保持便携性以及您所陈述的业务需求。