Java - Как разбить строку

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