逐行搜索c#时,stringbuilder vs list string

时间:2014-09-29 13:17:22

标签: c# list stringbuilder

我有一个WinForm应用程序从serail / telnet终端获取输出 由于历史决定,所有输出都会转到像这样的列表

static List<string> BufferLog = new List<string>();

serialInputData += serialPort.ReadExisting();
BufferLog.Add(serialInputData);

现在我想添加另一个函数来阻塞线程直到句子{一个单词也可能} 我的想法是做

之类的事情
if (IsWaitForCustomMessage)
{
 while(IsNotTimeout)
 {

    List<string> waiterList = serialInputData.Split('\n').ToList();
    if (waiterList.Exists(x => x.Contains("SomeSentenc")) return true ;
 }
 return false;
} 

假设serialInputData不包含一行但多行

我想知道的是,有没有更快的方法来检查这些线?

对我而言,另一种相对简单的方法是使用stringBuilder,我更愿意尝试其他方式

如果我将BufferLogList<string>更改为其他类型,那么

也是您的体验吗?

1 个答案:

答案 0 :(得分:1)

最后一个问题 - 是的,我使用StringBuilder而不是List(字符串),因为它更适合你正在做的事情(用增量输入构建一个字符串)。只是整洁而不是更好的表现。

我想你是在问如何等待StringBuilder包含特定的字符序列?有没有什么理由你不能只使用IndexOf而不是把它分成几行?这样可以防止在内存中移动字符串的速度非常快。