黑马程序员技术交流社区
标题:
关于对字符串进行切割的一点疑问
[打印本页]
作者:
潘星
时间:
2012-8-10 02:21
标题:
关于对字符串进行切割的一点疑问
本帖最后由 潘星 于 2012-8-10 11:20 编辑
本来是想对一个文件名用"."进行切割的,然后得到文件的扩展名,
因为文件扩展名都是用点连接的,但是我在用的时候发现切割不了,
这是为什么?
class bbb
{
public static void main(String[] args)
{
//String str="aaa,bbb,ccc,ddd"; //
对字符串用逗号切割,结果有效
String str="aaa.bbb.ccc.ddd"; //
将逗号改成了点,也就是".",结果确什么都没有, 有没有人知道是什么原因?
//String[] arr=str.split(",");
String[] arr=str.split(".");
for (String s:arr)
{
System.out.println(s);
}
}
}
作者:
李敬
时间:
2012-8-10 03:16
本帖最后由 李敬 于 2012-8-10 03:23 编辑
先看帮助文档
String[] split(String regex)
根据给定正则表达式的匹配拆分此字符串。
split是按照正则表达式的字符串来替换,正则表达式中有 15 个元字符,是有特殊意义的,使用时需要转义,这 15 个字符分别是:
( [ { \ ^ - $ ** } ] ) ? * + .
正则表达式中表述上述字符,需要在前面加上“\”,但是“\”是 Java 中的特殊字符,
在 Java 代码中用“\\”表示正则表达式中的“\”
。
“ . ”在正则表达式中有特殊的含义,因此我们使用的时候必须进行转义。
只要将
String[] arr=str.split(".");
改成
String[] arr= str.split("\\.");
就可以了。
作者:
尤洋
时间:
2012-8-10 07:07
点 在正则表达式中有特殊意义,所以不能直接切割。
需要使用转义字符"\.",但是转义字符在正则表达式中仍然有特殊意义,
所以要用两次即" \\."
作者:
马林康
时间:
2012-8-10 07:28
. 表示任意字符,如果想按照.切割请使用\\.
作者:
潘星
时间:
2012-8-10 10:57
正则表达式?原来如此,还没学到这里,不过用\\.试了下确实是可以,谢谢了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2