簡體   English   中英

從字符串中提取子字符串最快的方法是C#中的定界符?

[英]What is the fastest way to extract a substring from a string, up to a delimiter in C#?

因此,我正在解析一個大文件,並且我需要優化我的字符串提取過程(當前該程序甚至大約需要1-2分鍾才能完成文件的解析)。 這是調試和進一步開發軟件的殺手。

范例程序

string sample = "First Line\nSecond Line\nThird Line";
string extracted_string = ExtractString(ref sample, "\n");
// extracted_string should hold "First Line"
// sample should hold "Second Line\nThird Line";

ExtractString函數

function string ExtractString(ref string original, string delimiter)
{
    int index_of = original.IndexOf(delimiter);
    string result = "";

    if(index_of >= 0)
    {
       result = original.Substring(0, index_of);

       // Remove string & delimiter from original
       original = original.Remove(0, index_of + 1);
    }
    else
    {
       result = original;
       original = "";
    }

    return result;
}

我有另一種方法來加快處理速度嗎?...到目前為止,每條記錄要花費大約50-80ms的處理時間,並且大概有6000-7000條記錄。

您應該使用string.Split(char delimeter)方法。 它比對字符串的操作要快得多。 字符串是不可更改的,此特性會導致性能問題。 在每個操作中,都會分配新的內存。 將您的方法更改為:

string sample = "First Line\nSecond Line\nThird Line";
var extracted_strings = sample.Split('\n');

請閱讀有關如何在Visual C#中改善字符串連接性能的更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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