Java开发:字符串切割split函数——切割符转码注意事项
2024-08-27 23:13:51
一、问题如下:
1、先对一个已有字符串进行操作,使用 ; 进行分割:
//示例字符串
String string="sr1.db1.tb1.df1;sr2.db2.tb2.df2;";
//先用;进行分割
String a[]=string.split(";");
for(String str:a)
{
System.out.println(str);
}
此处切割之后的结果是没有问题的,结果为:
2、对切割完的结果再用 . 进行切割:
//示例字符串
String string="sr1.db1.tb1.df1;sr2.db2.tb2.df2;";
//先用;进行分割
String a[]=string.split(";");
for(String str:a)
{
String b[]=str.split(".");
for(String str2:b)
{
System.out.println(str2);
}
}
此时就会报错,无法得出结果。
二、问题解析
split方法的参数是正则表达式,在使用字符或字符串作切割符时要注意对某些字符做转码。
就像之前问题里使用 ; 进行切割就没什么问题,但是使用 . 进行切割就会出现报错。 . 在正则表达式中表示任意字符,如果要通过.号做分割,则需要使用双斜杠或者Pattern.quote()方法对其进行转码:
split("\\.")
split(Pattern.quote("."))
这样问题就得到了解决:
//示例字符串
String string="sr1.db1.tb1.df1;sr2.db2.tb2.df2;";
//先用;进行分割
String a[]=string.split(";");
for(String str:a)
{
String b[]=str.split(Pattern.quote("."));
for(String str2:b)
{
System.out.println(str2);
}
}
结果如下:
最新文章
- JSP 9大内置对象详解
- Uva11538 排列组合水题
- MQTT协议(一)
- hibernate3与ehcache-2.8.3配合使用,在多个SessionFactory实例的情况下出现“Another unnamed CacheManager already exists in the same VM”问题
- android 学习随笔二十四(动画:帧动画)
- Linux 配置 vimrc
- 华硕电脑安装ubuntu出现问题及决方案
- HDU 4662 MU Puzzle 简单找规律
- javascript对象事件绑定方法
- HDU 2985 Another lottery(坑题)
- java获取当前路径的几种方法
- django开发中利用 缓存文件 进行页面缓存
- Django restful-framework初步学习
- VS Code 常用命令记录
- [Swift]LeetCode541. 反转字符串 II | Reverse String II
- Linux系统使用
- Windows Server 2012 R2 设置 NTP 服务
- CommandLineParser命令行解析类
- C# httpRequest Soap请求
- PHP 使用 MongoDB