比较快的方式我有一个这样的(吨)string
(S):来分割字符串
HKR,Drivers,SubClasses,,"wave,midi,mixer,aux"
基本上,我希望它在,
字符分割成多个strings
。
但是,如果,
字符在"
之内或%
之内,则应该忽略它。
在从线换句话说上述我期望的字符串:
HKR
Drivers
SubClasses
"wave,midi,mixer,aux"
(与由上面的空行中表示的一个空字符串)。
如果行是HKR,Drivers,SubClasses,,%wave,midi,mixer,aux%
那么基本上与上面相同,当然只有返回的最后一个字符串应该是%wave,midi,mixer,aux%
。
我有一些工作代码,但它是令人难以置信的缓慢处理所有的线,我非常需要找到一个更快的方式来做到这一点。
private static IEnumerable<string> GetValues(string line)
{
var insideQuotes = false;
var insidePercent = false;
var startValueIndex = 0;
for (var i = 0; i < line.Length; i++)
{
if (line[i] == '%' && !insideQuotes)
{
insidePercent = !insidePercent;
}
if (line[i] == '"')
{
insideQuotes = !insideQuotes;
}
if (line[i] != ',' || insideQuotes || insidePercent)
{
continue;
}
yield return line.Substring(startValueIndex, i - startValueIndex);
startValueIndex = i + 1;
}
}
任何帮助,将不胜感激。
如果你看过这个问题,我不想把它分成* every *','。 – cogumel0
使用'VisualBasic.TextFieldParser'并设置['HasFieldsEnclosedInQuotes'](https://msdn.microsoft.com/en-us/library/microsoft.visualbasic.fileio.textfieldparser.hasfieldsenclosedinquotes(v = vs.110).aspx)到'真'。 –
@ cogumel0他说的是在拆分中使用Regex – Yahya