#java #string #stringtokenizer
#java #строка #stringtokenizer
Вопрос:
У меня есть такая строка:
14.809180,56.876968,0.000000 14.808170,56.877048,0.000000 14.805100,56.877220,0.000000 14.804130,56.877338,0.000000
т.е. в начале есть пробел, а также после 0.000000 есть пробел. Я просто хочу извлечь 14.XYZ
и 56.XYZ
. Как я могу это сделать?
Комментарии:
1. Вы пробовали метод String#split(), возможно, делали
split("[,\s] ");
или что-то подобное.
Ответ №1:
Согласно моему комментарию, попробуйте String#split(…) , например:
String test = "14.809180,56.876968,0.000000 14.808170,56.877048,0.000000 14.805100,56.877220,0.000000";
String[] tokens = test.split("[,\s] ");
for (String token : tokens) {
System.out.println(token);
}
"[,\s] "
это регулярное выражение, которое помогает методу split разделить строку, используя один или несколько пробелов (s) или запятую.
Комментарии:
1. Во время итерации мне просто нужны 14.xyz и 56.xyz… что мне делать в этом случае?
2. Чтобы пропустить каждую третью итерацию, я изменил цикл foreach на обычный для цикла String[] tokens = coordinates.split(«[,\s] «); for(int j=1;j длина;j ){ if(j%3!=0)System.out.println(токены[j]); }
Ответ №2:
Это разделит и повторит все десятичные дроби во входной строке
String groups[] = input.split(" ");
for(int i = 0; i < groups.length; i ) {
String decimals[] = groups[i].split(",");
for(int j = 0; j < decimals.length; j ) {
float f = Float.parseFloat(decimals[j]);
//do something with f
}
}
Ответ №3:
Возможно, это не самое красивое решение, но оно будет работать.
String[] myStrings = uglyString.spli(",");
Integer firstNum = new Integer(myStrings[0]);
Integer secondNum = new Integer(myStrings[1]);
Ответ №4:
используется String.split()
для разделения каждого числа, а затем Double.valueOf()
для преобразования его в a double
.
String string = "14.809180,56.876968,0.000000 14.808170,56.877048,0.000000 14.805100,56.877220,0.000000 14.804130,56.877338,0.000000";
String[] numStrings = string.split("[ ,]");
for (String num : numStrings) {
double d = Double.valueOf(num);
// ...
}