[英]c# regex.split not working on chrome
我使用以下代碼從多行asp:textbox檢索行
string[] SerialNumbers = Regex.Split(txtSerials.Text.Trim(), "\r\n");
它可以在IE中按預期方式工作,但在Chrome中則不能,請參考以下示例:
IE瀏覽器:
SerialNumbers[0]="Line1"
SerialNumbers[1]="Line2"
鉻:
SerialNumbers[0]="Line1\nLine2"
您是否嘗試過規范文本框中的換行符:
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');
您可以只對字符串使用split方法。
string [] SerialNumbers = txtSerials.Text
.Trim()
.Split(new string[] { "\r\n", "\n" }, StringSplitOptions.RemoveEmptyEntries);
將您的正則表達式更改為\\r?\\n
,以便它可以與\\r\\n
(CR + LF,DOS / Windows標准)和\\n
(僅LF,Unix標准)一起使用
從您看到的結果來看,Chrome似乎正在使用后者。
到目前為止,有兩個主題的答案,我懷疑最好的方法是按以下方式使用這兩個主題:
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();
這將保持可移植性以及您陳述的業務需求。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.