2016-11-25 157 views
1

所以我解析一个大文件,我需要优化我的字符串提取过程(它目前需要大约1-2分钟的时间才能完成解析文件的程序)。这是调试和进一步开发软件的杀手。什么是从字符串中提取子串的最快方法,直到C#中的分隔符?

示例程序

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条记录。

+0

你试过string.split? – Yaman

+0

也许考虑使用StringBuilder?在'StringBuilder'中操作字符串应该快得多。 – pwas

+1

你真的需要修剪从原始字符串找到的字符串吗?如果你不需要一个修剪过的原始字符串,那么你可以传递最后找到的换行符的索引作为下一个子字符串剪辑的起始点,或者使用一个完全不同的方法来处理文件 – Steve

回答

相关问题