如何在C#中将字符串拆分为标记?

时间:2015-03-27 17:14:29

标签: c#

你能告诉我如何分割字符串,例如:

string x="2+3-45.3+9"

到数组

['2','+','3','-','45.3','+','9']
在C#中

3 个答案:

答案 0 :(得分:2)

将字符串拆分为令牌很复杂,只需几行代码就无法实现。您需要构建一个Parser来实现此目的。有关该算法的更多详细信息,请参见此链接http://en.wikipedia.org/wiki/Recursive_descent_parser

我建议使用像ANTLR这样的库或像RPNParser这样的内置逻辑的库来执行解析并输出令牌

答案 1 :(得分:2)

与Regex:

string x="2+3-45.3+9";
string pattern = @"([+\-*/])";
var tokens = Regex.Split(x, pattern).Where(i => !string.IsNullOrEmpty(i)).ToList();

答案 2 :(得分:0)

您需要先定义要使用的分隔符。 那么你可以在字符串上做一个.Split(),你可以使用正则表达式,如果你熟悉它。

using System.Text.RegularExpressions;
foreach (Match m in Regex.Matches(string x, @"regex here"))

假设它很简单,尝试这样的事情

cha[]r tokenized;
foreach(char c in x)
{
    if(c is number or decimal)
       add to token
    if(c is symbol)
       inc tokenized index and add to tekenized arr
}