2009-06-20 3 views

ответ

7

split занимает regular expression, так что вы можете сделать:

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

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

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

+0

Должно быть «[+ \\ -]». –

+0

Я сделал это достаточно, чтобы вы подумали, что двойная обратная косая черта будет второй натурой, но я думаю, нет. –

+0

Если производительность вас беспокоит, я бы рекомендовал вам решение Майкла использовать StringTokenizer. –

6

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

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

вернет жетоны ("2x^7", "+", "х^2", "+", "3x" , "-", "9") - вам нужны знаки, чтобы иметь полную информацию о полиноме. Если нет, оставьте параметр конструктора laster.

+0

«StringTokenizer - это унаследованный класс, который сохраняется по соображениям совместимости, хотя его использование не рекомендуется в новом коде. Рекомендуется, чтобы любой, кто ищет эту функциональность, использовал метод split для String или пакет java.util.regex». - от http://java.sun.com/javase/6/docs/api/java/util/StringTokenizer.html – IAdapter

+2

За исключением того, что метод split() делает * not *, предлагает функциональность возврата разделителей. –

2

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

+0

Думаю, вам, возможно, - ' –

+1

, если это не в начале, непосредственно после [^ или в конце :) – mihi

Смежные вопросы