视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
Java中用split函数进行分割字符串
2025-10-03 14:35:56 责编:小OO
文档
Java中用split函数进行分割字符串。  

2011-05-23 21:36:42|  分类: 学习|举报|字号 订阅

1.语法如下

String.split(sourceStr,maxSplit)

String.split(sourceStr)

参数说明:sourceStr是被分割的字符串,maxSplit是最大的分割数

返回值说明:split函数的返回值是一个字符串数组String[]

2.示例代码

package wang48.jiaocheng;

public class StringSplit 

{

 public static void main(String[]args)

 {

  String sourceStr="1,2,3,4,5";

  String[] sourceStrArray=sourceStr.split(

  for(int i=0;i  {

   System.out.println(sourceStrArray[i]);

  }

  

  //最多分割出3个字符串

  int maxSplit=3;

  sourceStrArray=sourceStr.split(

  for(int i=0;i  {

   System.out.println(sourceStrArray[i]);

  }

  

 }

}

输出结果:

1

2

3

4

5

1

2

3,4,5

 

---------------------------------------------------------------------------------------------------------------------------

听说这个split方法比那个StringTokenizer效率高一点,今天刚好用上,就拿来试试,没有想到一试就出问题了,把折分结果打在控制台上,结果居然是空的,我要折分的字符串是“5#1|7#2|11#3”刚用这里str.split("|")时就出问题了,看了下面这篇文章,将其改为str.split("\\\\|")就OK了,这个|在正则表达式中也是个特殊字符。回头还得弄弄正则表达式了。

public static void main(string[] args) {

string value = "192.168.128.33";

string[] names = value.split(".");

for (int i = 0; i < names.length; i++) {

system.out.println(names[i]);

}

}

运行结果:

对,没看错!没有任何输出!

让我们来看看 split 方法的方法签名吧:

public string[] split(string regex)

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

,看了 split 方法的实现代码就更坚定了我们的信心:

public string[] split(string regex, int limit) {

return pattern.compile(regex).split(this, limit);

}

split 的实现直接调用的 matcher 类的 split 的方法。读者已经知道,“ . ”在正则表达式中有特殊的含义,因此我们使用的时候必须进行转义。

public static void main(string[] args) {

string value = "192.168.128.33";

//注意要加\\\\,要不出不来,yeah

string[] names = value.split("\\\\.");

for (int i = 0; i < names.length; i++) {

system.out.println(names[i]);

}

}

输出结果:

192

168

128

33

 

 

 

 

 

今天要用到split函数,对浮点数进行分割为子字符串,然后将结果作为字符串数组返回。

可是在写的时候,就报错了。在网上一搜,才知道我错在哪里。

weight = "159.000";

1.“ . ”在正则表达式中有特殊的含义,因此使用的时候必须进行转义。

只要将

String[] weights = weight .split(".");

改为

String[] weights = weight .split("\\\\.");

2.同样的,对于字符"|都得加上转义字符,前面加上"\\\\"。

3.而如果是"\\",那么就得写成"\\\\\\\\"。

4.如果一个字符串中有多个分隔符,可以用"|"作为连字符。

比如:String str = "Java string-split#test可以用Str.split(" |-|#")把每个字符串分开。这样就把字符串分成了3个子字符串。

希望大家使用的时候,多注意这些地方。

 

 

 

 

***************************************************************************************************************************************************

在使用String.split方法分隔字符串时,分隔符如果用到一些特殊字符,可能会得不到我们预期的结果。

我们看jdk doc中说明

public String[] split(String regex)

 Splits this string around matches of the given regular expression. 

参数regex是一个 regular-expression的匹配模式而不是一个简单的String,他对一些特殊的字符可能会出现你预想不到的结果,比如测试下面的代码:

用竖线 | 分隔字符串,你将得不到预期的结果

    String[] aa = "aaa|bbb|ccc".split("|");

    //String[] aa = "aaa|bbb|ccc".split("\\\\|"); 这样才能得到正确的结果

    for (int i = 0 ; i       System.out.println("--"+aa[i]);

    }

用竖 * 分隔字符串运行将抛出java.util.regex.PatternSyntaxException异常,用加号 + 也是如此。

    String[] aa = "aaa*bbb*ccc".split("*");

    //String[] aa = "aaa|bbb|ccc".split("\\\\*"); 这样才能得到正确的结果   

    for (int i = 0 ; i       System.out.println("--"+aa[i]);

    }

显然,+ * 不是有效的模式匹配规则表达式,用"\\\\*" "\\\\+"转义后即可得到正确的结果。

"|" 分隔串时虽然能够执行,但是却不是预期的目的,"\\\\|"转义后即可得到正确的结果。

还有如果想在串中使用"\\"字符,则也需要转义.首先要表达"aaaa\\bbbb"这个串就应该用"aaaa\\\\bbbb如果要分隔就应该这样才能得到正确结果:

String[] aa = "aaa\\\\bbb\\\\bccc".split("\\\\\\\\"); 

 

 

 

 下载本文

显示全文
专题