你真的完全理解了String的split方法?之一

2025-09-25 15:57:44

1、先来看看API:

/**

* @param  regex

*         the delimiting regular expression

*

* @return  the array of strings computed by splitting this string

*          around matches of the given regular expression

*

* @throws  PatternSyntaxException

*          if the regular expression's syntax is invalid

* * @see java.util.regex.Pattern

*

* @since 1.4

* @spec JSR-51

*/

public String[] split(String regex) {

   return split(regex, 0);

}

你真的完全理解了String的split方法?之一

2、细心的同学已经观察到

split方法的第一个参数是regex,是的,就是前面讲过的正则表达式

还可以使用第二个参数limit,即最多返回几个字符串

来一段常见的代码

package chapter4;

/**

* Created by MyWorld on 2016/3/28.

*/

public class StringSplitDemo {

   public static void main(String[] args) {

       String demoStr = "Hello world tang";

       String[] result = demoStr.split(" ");

       for (String s : result) {

           System.out.println(s);

       }

   }

}

你真的完全理解了String的split方法?之一

3、api已经了解了,输出的结果应该是Hello   world   tang

执行下看看结果

Output:

Hello

world

tang

你真的完全理解了String的split方法?之一

4、来猜猜这种场景下的输出是什么

更改下代码

Code:

String demoStr = "v1|v2|v3";

String[] result = demoStr.split("|");

你真的完全理解了String的split方法?之一

5、是v1 v2 v3 ?

好执行下看看结果

Output:

v

1

|

v

2

|

v

3

你真的完全理解了String的split方法?之一

6、是不是很意外,为什么呢?

不理解的tx再想想api里怎么说的,第一个参数是什么样的数据呢?

正则表达式

对了

是正则表达式嘛。正则表达式30分钟入门系列不是已经讲过,“|”是用来表示字符串之间或的关系

上面的例子中,regex是"|",从正常的视角来看,除了“|”什么也没有,大家是不是忘了,\b,就是表示字符前后的界定符

"|"就是表示以界定符来分隔字符串,得到的就是一个一个的元素

如果想得到v1 v2 v3,需要怎么做呢

如果不想让“|”作为正则表达式,就加转义符

改下代码

Code:

String[] result = demoStr.split("\\|");

你真的完全理解了String的split方法?之一

7、执行下,看看结果是否与预期一致

Output:

v1

v2

v3

与预期一致 

OK

你真的完全理解了String的split方法?之一

8、细心的tx有木有受到“|”,这从此正则表达式的启发

如果有多类分隔符的场景

更改代码:

Code:

String demoStr = "v1|v2;v3";

String[] result = demoStr.split("\\||;");

你真的完全理解了String的split方法?之一

9、执行下看看结果,是不是得到预期的v1 v2 v3

Output:

v1

v2

v3

与预期一致

Ok

你真的完全理解了String的split方法?之一

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢