Как я могу разделить данную строку, используя + или -? - PullRequest
3 голосов
/ 20 июня 2009

Я хочу разбить многочлен, например:

2x^7+x^2+3x-9

В каждый из его терминов (2x ^ 7, x ^ 2, 3x, 9)

Я думал об использовании String.split (), но как сделать так, чтобы он занимал более одного параметра?

Ответы [ 3 ]

8 голосов
/ 20 июня 2009

split принимает регулярное выражение , поэтому вы можете сделать:

String[] terms = myString.split("[-+]");

, и он разделится, когда встретит + или -.

Редактировать: Обратите внимание, что, как сказал Майкл Боргвардт, при таком разделении невозможно определить, какой оператор (+ или -) был разделителем. Если это важно для вашего использования, вы должны использовать StringTokenizer, как он предложил. (Если вы пытаетесь написать синтаксический анализатор математических выражений, ни один из них не очень поможет.)

6 голосов
/ 20 июня 2009

Звучит как идеальное приложение для StringTokenizer класса:

StringTokenizer st = new StringTokenizer("2x^7+x^2+3x-9", "+-", true);

Вернет токены ("2x ^ 7", "+", "x ^ 2", "+", "3x", "-", "9") - вам нужны знаки для полного Информация о полиноме. Если нет, то не указывайте параметр конструктора Laster.

2 голосов
/ 20 июня 2009

String.split принимает регулярные выражения, поэтому попробуйте split("[-+]").

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...