Java - Как разбить строку
Для разделения строки используетсяString.split(regex). Просмотрите следующие примеры:
String phone = "012-3456789";
String[] output = phone.split("-");
System.out.println(output[0]);
System.out.println(output[1]);
Выход
012
3456789
Note
Этотsplit (regex) принимает в качестве аргумента регулярное выражение, не забудьте экранироватьregex
special characters, например точку / точку.
1. Разделить период / точку
Точка / точка - это специальный символ в регулярном выражении, вы должны экранировать его либо двойным люфтом\., либо используя методPattern.quote.
TestSplit.java
package com.example.test
import java.util.regex.Pattern;
public class TestSplit {
public static void main(String[] args) {
String test = "abc.def.123";
String[] output = test.split("\\.");
//alternative
//String[] output = test.split(Pattern.quote("."));
System.out.println(output[0]);
System.out.println(output[1]);
System.out.println(output[2]);
}
}
Выход
abc def 123
Несколько общих проверок перед разделением.
TestSplit.java
package com.example.test
import java.util.regex.Pattern;
public class TestSplit {
public static void main(String[] args) {
String test = "abc.def.123";
if(test.contains(".")){
String[] output = test.split("\\.");
if(output.length!=3){
throw new IllegalArgumentException(test + " - invalid format!");
}else{
System.out.println(output[0]);
System.out.println(output[1]);
System.out.println(output[2]);
}
}else{
throw new IllegalArgumentException(test + " - invalid format!");
}
}
}
2. Пример StringTokenizer
Раньше разработчики Java любили использовать классStringTokenizer для разделения строки. Это связано с тем, что классStringTokenizer доступен с JDK 1.0, аString.split() доступен с JDK 1.4.
TestSplit.java
package com.example.test
import java.util.StringTokenizer;
public class TestSplit {
public static void main(String[] args) {
String test = "abc.def.123";
StringTokenizer token = new StringTokenizer(test, ".");
while (token.hasMoreTokens()) {
System.out.println(token.nextToken());
}
}
}
Выход
abc def 123
Note
ЭтотStringTokenizer является устаревшим классом, сохранен по соображениям совместимости, использование не рекомендуется! Пожалуйста, используйтеstring.split().