私はこのような文字列を持っているスペースで区切られたテキストを解析する最適な方法
/c SomeText\MoreText "Some Text\More Text\Lol" SomeText
私はそれをトークン化したいが、私はスペースを分割することはできない。私は幾分醜いパーサーを思いついたが、誰かがもっとエレガントなデザインをしているのだろうかと思っている。
これはC#btwです。
編集:私の醜いバージョンは、醜いですが、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();
}
は私たちに、あなたがスペースで分割することができない理由を含め、達成しようとしているものについての詳細を教えてください。それから、あなたの状況に対する答えを調整することができます。 –