Рубрики
Без рубрики

Примеры Java StringTokenizer

“StringTokenizer” помогает разделить строку на несколько токенов; однако это устаревший класс. Попробуйте метод разделения строки.

В 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.";
        List result = 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();
        List trends = 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-базовый

Рекомендации

Оригинал: “https://mkyong.com/java/java-stringtokenizer-example/”