Java String字符串分割详解:StringTokenizer、String.split()、String.subString()

Java String字符串分割详解:StringTokenizer、String.split()、String.subString()

1. StringTokenizer

StringTokenizer用法示例:

        String str = "I am a great student!";

        StringTokenizer st = new StringTokenizer(str);

        while (st.hasMoreElements()){
            System.out.println(st.nextElement());
        }

输出结果:

I
am
a
great
student!

StringTokenizer有四个常用的函数:

  1. hasMoreElements()和hasMoreTokens()。这两个方法用法一样,功能也一样,表示StringTokenizer是否还有元素,当其为False,表示StringTokenzier为空。
  2. nextElement()和nextToken()。这两个方法的用法是一样的,返回此 StringTokenizer 的下一个标记。

StringTokenizer有三个构造函数:

  1. StringTokenizer(String str)。默认以” \t\n\r\f”(前有一个空格,引号不是)为分割符。该方法默认以空格回车换行等为分隔符,常用于语句单词切割。
    源码:
    public StringTokenizer(String str) {
        this(str, " \t\n\r\f", false);
    }

示例如1小节所示。

  1. StringTokenizer(String str, String delim)。指定delim为分割符。
    源码:
    public StringTokenizer(String str, String delim) {
        this(str, delim, false);
    }

示例:

        String str = "IaaloveaaChina!";

        StringTokenizer st = new StringTokenizer(str,"aa");

        while (st.hasMoreElements()){
            System.out.println(st.nextElement());
        }

输出:

I
love
Chin
!

注意输出结果!!!

  1. StringTokenizer(String str, String delim, boolean returnDelims)。returnDelims为true的话则delim分割符也被视为标记。
    源码:
    public StringTokenizer(String str, String delim, boolean returnDelims) {
        currentPosition = 0;
        newPosition = -1;
        delimsChanged = false;
        this.str = str;
        maxPosition = str.length();
        delimiters = delim;
        retDelims = returnDelims;
        setMaxDelimCodePoint();
    }

示例:

String str = "IaloveaChina!";

        StringTokenizer st = new StringTokenizer(str,"a",true);

        while (st.hasMoreElements()){
            System.out.println(st.nextElement());
        }

输出:

I
a
love
a
Chin
a
!

2. String.split()

在java.lang包中有String.split()方法,返回是一个数组。
split()用法示例:

        String str = "IaloveaChina!";

        String[] splitStr = str.split("a");

        for (String tempStr: splitStr) {
            System.out.println(tempStr);
        }

输出:

I
love
Chin
!

注意:
(1)由于“.”和“|”都是转义字符,所以使用时必须得加"\"。如:
String.split("\."),这样才能正确的分隔开,不能用String.split(".");
String.split("\|"),这样才能正确的分隔开,不能用String.split("|");

(2)如果在一个字符串中有多个分隔符,可以用“|”作为连字符,比如:“acount=? and uu =? or n=?”,把三个都分隔出来,可以用
  String.split(“and|or”);

String.split()提供三种构造函数:

  1. public String[] split(String str)。将str作为分割符进行分割,注意,此处str是String类型而不是char,也就是分隔符可以是一个字符串**(不同于StringTokenizer)**。
    示例:
        String str = "IaaloveaaChina!";

        String[] splitStr = str.split("aa");

        for (String tempStr: splitStr) {
            System.out.println(tempStr);
        }

输出:

I
love
China!

  1. public String[] split(String regex,int limit)。根据匹配给定的正则表达式来拆分此字符串。
    此方法返回的数组包含此字符串的每个子字符串,这些子字符串由另一个匹配给定的表达式的子字符串终止或由字符串结束来终止。数组中的子字符串按它们在此字符串中的顺序排列。如果表达式不匹配输入的任何部分,则结果数组只具有一个元素,即此字符串。

  2. public string[] split(string regex)
    这里的参数的名称是 regex ,也就是 regular expression (正则表达式)。这个参数并不是一个简单的分割用的字符,而是一个正则表达式。

3. String.subString()

String.subString()严格来说并不是字符串切割,因为它没有分割符。String.subString()用于返回指定index的子字符串。

String.subString()有两个构造函数:

  1. 单参数形式:substring(int beginIndex)。该子字符串从beginIndex处的字符开始,直到此字符串末尾。
    示例:
        String str = "IloveChina!";
        String newStr = "";

        newStr = str.substring(5);

        System.out.println(newStr);

输出:

China!

  1. 双参数形式:substring(int beginIndex, int endIndex)该子字符串从指定的 beginIndex 处开始,直到索引 endIndex – 1 处的字符。注意:其它一些语言第二个参数往往代表长度,JAVA不一样。该子字符串的长度为 endIndex-beginIndex。

示例:

        String str = "IloveChina!";
        String newStr = "";

        newStr = str.substring(1,5);

        System.out.println(newStr);

输出:

love

你可能感兴趣的:(Java基础)