簡體   English   中英

C#regex.split不適用於Chrome

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM