java中的分割函数_Java 中 split 函数分割的特别问题

问题1:竖线分割问题

在 Flex 中,如果一个字符串是用 | 分割,则直接用 xxx.split("|"); 就可以得到分割后的数组,由于它语法与 Java 及其相似,所以想在 Java 中也是这样分割,不过很不幸,出现如下情况:

测试代码:

public class Test {

public static void main(String[] args) {

String s = "a|b|c|d";

String[] sa = s.split("|");

System.out.println("Length:" + sa.length);

int i = 1;

for (String ss : sa) {

System.out.println(i++ + "->" +ss);

}

}

}

测试结果:

Length:8

1->

2->a

3->|

4->b

5->|

6->c

7->|

8->d

究其原因,Java 的 split 函数接受的参数类型为正则表达式,API中这样写:

Parameters:

regex the delimiting regular expression

而 | 在正则里是个特殊字符,有意义所在的,表示“或”的意思,等同于 "" 或空的意思,当然它也表示竖线的意思。所以当用 | 直接作为参数分割时,会把字符串通过空分割出一个空,以及串中的每一个字符,不管字符串用什么分割,都会切成 8 个长度的数组。

当然,如果想正确的通过竖线来分割得到数组,可以用正确的正则表达式,如把例子代码中的 "|" 改为 "\\|" 或者 "[|]" 则即可得到想要的效果。

至于 Flex 中为什么直接用 | 分割就可以,目前还没查到原因,不过看资料,参数也应该是正则表达式,再调查吧,如果有结果,再补详细说明。

问题2:分割并过滤字符串中的英文

如果有个字符串,是用空格分割的,但如果拿空格过滤,则会把英文字符串分割为一个个单词,比如:

广东工业大学

广工 广工大 广东工大 GDUT Guangdong University of Technology

最好是能把英文的整个字符串分割出来,但目前没有找到好的办法,所以就干脆把英文都去掉,只得到分割后的中文,方法如下:

字符串.split("[^\u4E00-\u9FA5]");

正则表达式的意义为:非中文字符,这样就可以把串中的中文都分割出来。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值