C # Tokenizer - сохраняя разделители [дубликаты]
На этот вопрос уже есть ответ:
Есть ли в C # токенайзер строк, как в Java? 11 ответовЯ работаю над переносом кода из JAVA в C #, и часть кода JAVA использует токенизатор - но, насколько я понимаю, результирующий массив из stringtokenizer в Java также будет иметь разделители (в данном случае +, -, /, *, (,)) как токены. Я пытался использовать функцию C # Split (), но, похоже, устраняет сами разделители. В конце концов, это проанализирует строку и запустит ее как вычисление. Я провел много исследований и не нашел ссылок на эту тему.
Кто-нибудь знает, как получить фактические разделители в том порядке, в котором они встречались, в массиве split?
Код для токена:
public CalcLexer(String s)
{
char[] seps = {'\t','\n','\r','+','-','*','/','(',')'};
tokens = s.Split(seps);
advance();
}
Testing:
static void Main(string[] args)
{
CalcLexer myCalc = new CalcLexer("24+3");
Console.ReadLine();
}
«24 + 3» приведет к следующему выводу: «24», «3» Я ищу вывод «24», «+», «3»
В сущности полного раскрытия, этот проект является частью назначения класса и использует следующий полный исходный код:
http: //www.webber-labs.com/mpl/source%20code/Chapter%20Seventeen/CalcParser.java.tx http: //www.webber-labs.com/mpl/source%20code/Chapter%20Seventeen/CalcLexer.java.tx