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()
.