我有串這樣最佳方式分隔的文本
/c SomeText\MoreText "Some Text\More Text\Lol" SomeText
我要來標記它,但是我不能只拆分的空間。我想出了一些有點難懂的解析器,但我想知道是否有人有更優雅的設計。
這是C#中的btw。
編輯:我的醜陋的版本,雖然醜陋,是O(N),實際上可能比使用正則表達式更快。
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();
}
請告訴我們更多關於你想實現什麼,包括你爲什麼不能在空間分割。然後我們可以根據您的情況定製我們的答案。 – 2008-09-10 18:11:57