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

Я новичок в программировании Java и столкнулся с классом StringTokenizer. Конструктор принимает разделяемую строку и другую необязательную строку-разделитель, каждый символ которой обрабатывается как отдельный разделитель при разделении исходной строки. Мне было интересно, есть ли способ разбить строку, передав регулярное выражение в качестве разделителя. Например:

String s="34.5xy32.6y45.7x36xy"
StringTokenizer t=new StringTokenizer(s,"xy");
System.out.println(t.nextToken());
System.out.println(t.nextToken());

Фактический результат:

34.5
32.6

Однако желаемый результат:

34.5
32.6y45.7x36

Надеюсь, вы можете помочь. Кроме того, предложите способ, если это невозможно с классом StringTokenizer.

Заранее спасибо.

p.s. Есть ли способ узнать, какой символ StringTokenizer в настоящее время использует в качестве разделителя из предоставленного набора?


person Victor Mukherjee    schedule 18.08.2012    source источник


Ответы (2)


Здесь вы хотели бы использовать String.split(), это даст вам массив с желаемым результатом.

Он примет ваш ввод и разделит его на точные совпадения с вашей строкой, которую вы предоставили. StringTokenizer будет разделен на любой из предоставленных вами наборов, а не на регулярное выражение.

Итак, вы измените свой код на:

String s="34.5xy32.6y45.7x36xy";
String[] splitString = s.split("xy");
System.out.println(splitString [0]);
System.out.println(splitString [1]);

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

person Elliott Hill    schedule 18.08.2012

Попробуй с этим.

String s="34.5xy32.6y45.7x36xy";
final String SPLIT_STR = "xy";
final String mainStr = "34.5xy32.6y45.7x36xy";
final String[] splitStr = mainStr.split(SPLIT_STR);
System.out.println("First Index Of xy : " +
mainStr.indexOf(SPLIT_STR));
for(int index=0; index < splitStr.length; index++) {
System.out.println("Split : " + splitStr[index]);
}
person Mohammod Hossain    schedule 18.08.2012
comment
Есть ли способ получить проанализированную строку и разделители в порядке, например, 34.5, xy, 32.6y45.7x36, xy? - person Victor Mukherjee; 02.09.2012