【发布时间】:2010-09-08 11:10:24
【问题描述】:
我有这样的字符串
/c SomeText\MoreText "Some Text\More Text\Lol" SomeText
我想对其进行标记,但是我不能只在空格上进行拆分。我想出了一些丑陋的解析器,但我想知道是否有人有更优雅的设计。
顺便说一句,这是在 C# 中。
编辑:我的丑陋版本,虽然丑陋,是 O(N),实际上可能比使用 RegEx 更快。
private string[] tokenize(string input)
{
string[] tokens = input.Split(' ');
List<String> output = new List<String>();
for (int i = 0; i < tokens.Length; i++)
{
if (tokens[i].StartsWith("\""))
{
string temp = tokens[i];
int k = 0;
for (k = i + 1; k < tokens.Length; k++)
{
if (tokens[k].EndsWith("\""))
{
temp += " " + tokens[k];
break;
}
else
{
temp += " " + tokens[k];
}
}
output.Add(temp);
i = k + 1;
}
else
{
output.Add(tokens[i]);
}
}
return output.ToArray();
}
【问题讨论】:
-
请告诉我们更多关于你想要完成的事情,包括为什么你不能在空格上分割。然后我们可以根据您的情况量身定制答案。