В Java мы используем StringTokenizer для разделения строки на несколько токенов.
Примечание StringTokenizer
является устаревшим классом, попробуйте метод разделения строки
, прочитайте это Как разделить строку в Java .
1. Примеры StringTokenizer
1.1 По умолчанию StringTokenizer
использует разделители по умолчанию: пробел, табуляцию, новую строку, возврат каретки и символы ввода формы, чтобы разделить строку на маркеры.
public StringTokenizer(String str) { this(str, " \t\n\r\f", false); }
Прочитайте приведенный ниже пример.
StringTokenizer st = new StringTokenizer("1, 2, 3, 4, 5"); while (st.hasMoreTokens()) { System.out.println(st.nextToken()); }
Выход
1 2 3 4 5
1.2 Второй аргумент конструктора StringTokenizer
определяет пользовательский разделитель для разделения строки. В приведенном ниже примере строка разделяется запятой.
StringTokenizer st = new StringTokenizer("1, 2, 3, 4, 5", ","); while (st.hasMoreTokens()) { System.out.println(st.nextToken().trim()); }
Выход
1 2 3 4 5
1.3 Третий аргумент конструктора StringTokenizer
указывает, хотим ли мы включить разделитель в качестве маркеров, значение по умолчанию равно false.
StringTokenizer st = new StringTokenizer("1, 2, 3, 4, 5", ",", true); while (st.hasMoreTokens()) { System.out.println(st.nextToken().trim()); }
Выход
1 , 2 , 3 , 4 , 5
2. Разделите строку запятой
Ниже приведен полный StringTokenizer
package com.mkyong.string; import java.util.ArrayList; import java.util.List; import java.util.StringTokenizer; public class StringTokenizerExample { public static void main(String[] args) { String line = "This is a String, split by, StringTokenizer example."; Listresult = split(line, ","); for (String s : result) { System.out.println(s.trim()); } } public static List split(String line, String delimiter) { List result = new ArrayList<>(); StringTokenizer st = new StringTokenizer(line, delimiter); while (st.hasMoreTokens()) { result.add(st.nextToken()); } return result; } }
Выход
This is a String split by StringTokenizer example.
3. Прочитайте файл и разделите строку
В этом примере строка за строкой считывается файл CSV и используется StringTokenizer
для разделения строки разделителем /.
1| 20.29| python 2| 4.345| java 3| 9.99 | nodejs 4| 10.7 | react
package com.mkyong.string; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; import java.util.List; import java.util.StringTokenizer; public class StringTokenizerExample { public static void main(String[] args) throws IOException { StringTokenizerExample obj = new StringTokenizerExample(); Listtrends = obj.readFile(Paths.get("C:\\test\\sample.csv"), "|"); trends.forEach(System.out::println); } public List readFile(Path path, String delimiter) throws IOException { List result = new ArrayList<>(); try (BufferedReader br = new BufferedReader(new FileReader(path.toString()))) { String line; while ((line = br.readLine()) != null) { StringTokenizer st = new StringTokenizer(line, delimiter); while (st.hasMoreTokens()) { Integer id = Integer.parseInt(st.nextToken().trim()); Double index = Double.parseDouble(st.nextToken().trim()); String desc = st.nextToken().trim(); result.add(new Trend(id, index, desc)); } } } return result; } class Trend { private int id; private Double index; private String desc; public Trend(int id, Double index, String desc) { this.id = id; this.index = index; this.desc = desc; } @Override public String toString() { return "Trend{" + "id=" + id + ", index=" + index + ", desc='" + desc + '\'' + '}'; } } }
Выход
Trend{id=1, index=20.29, desc='python'} Trend{id=2, index=4.345, desc='java'} Trend{id=3, index=9.99, desc='nodejs'} Trend{id=4, index=10.7, desc='react'}
Скачать Исходный Код
$клон git $клон git
$cd java-базовый
Рекомендации
- JAVADOC стрококенизатора
- Как разделить строку на Java
Оригинал: “https://mkyong.com/java/java-stringtokenizer-example/”