介绍
通常,我们面临这样一种情况,我们需要将字符串拆分为某些特定字符或子字符串,以从中获取一些有用的信息。
例如,我们可能想在国家代码或从CSV文件导入的数据上分割电话号码。
在本文中,我们将介绍如何在Java中拆分String。
该分裂()方法(没有限制)
此方法采用String
正则表达式(regex)格式的一个参数。此方法在给定正则表达式的匹配项附近拆分字符串。
该方法的语法为:
String[] split(String regex, int limit)
凡regex
参数表示的分隔符,即基于什么我们就会将我们的字符串。请记住,此参数不需要太复杂,Java仅提供使用正则表达式的选项。
例如,让我们看看如何将String拆分为两个单独的名称:
String myString = "Jane-Doe";
String[] splitString = myString.split("-");
我们可以简单地使用字符/子字符串代替实际的正则表达式。当然,在正则表达式中有一些特殊字符需要牢记,并在需要它们的字面值时转义它们。
字符串拆分后,结果将以字符串数组形式返回。返回数组中的字符串以与原始字符串相同的顺序出现。
结果打包在String数组中。要检索单独的名称,我们可以访问每个元素:
System.out.println(splitString[0]);
System.out.println(splitString[1]);
结果是:
Jane
Doe
请记住,此方法将在所有出现的定界符上分割字符串。例如,我们可以使用CSV格式的输入:
String myString = "Jane,21,Employed,Software Engineer";
String[] splitString = myString.split(",");
for (String s : splitString) {
System.out.println(s);
}
结果是:
Jane
21
Employed
Software Engineer
Javasplit()方法(有限制)
在此,该方法采用两个参数,一个是前面讨论的参数,regex
另一个是一个整数值,表示limit
。该limit
参数用于确定我们要分割字符串多少次。
该limit
参数可以采用三种形式之一,即,它可以是大于,小于或大于零。让我们看一下这些情况分别代表什么:
- 正数
limit
–String
将最多拆分limit - 1
一次。除此之外,字符串的其余部分将按原样作为数组的最后一个元素返回,而不进行拆分。返回数组的长度将始终小于或等于limit
。 - 负数
limit
–String
在定界符处将其拆分尽可能多的次数,而忽略特定的负值集。数组中的子字符串包括原始字符串中的尾随空格(如果有)。 - 将
limit
设置为0
-时,String
将再次拆分尽可能多的次数,并且结果数组的长度没有限制。split()
如前所述,其工作原理与调用方法相同,只是将regex作为参数。在这种情况下,不返回尾随空格。
正极限值
让我们看一些使用不同限制的示例。首先,一个正值limit
:
String myString = "there,,are,more,than,three,commas,,,";
String [] splitStrings = myString.split(",", 4);
for(String string : splitStrings){
System.out.println(String.format(" \" %s \"", string));
}
限制为4,String
最多将拆分三(limit - 1
)次。这给了我们一个包含四个元素(0..3)的数组,最后一个元素是第三次拆分之后的所有内容:
"there"
""
"are"
"more,than,three,commas,,,"
如果我们limit
在相同的String上使用负数:
String myString = "there,,are,more,than,three,commas,,,";
String [] splitStrings = myString.split(",", -1);
for(String string : splitStrings){
System.out.println(String.format(" \" %s \"", string));
}
在String
将被分割为多次地,和后空字符串将被添加到阵列中:
"there"
""
"are"
"more"
"than"
"three"
"commas"
""
""
""
我们没有考虑实际使用的负值,如果使用,则会得到相同的结果-150
。
如果将设置limit
为0
,则将再次对String进行尽可能多的拆分,但是结果数组将不包含尾随的空格:
String myString = "there,,are,more,than,three,commas,,,";
// Equivalent to calling the split() method with only the regex parameter
String [] splitStrings = myString.split(",", 0);
for(String string : splitStrings){
System.out.println(String.format(" \" %s \"", string));
}
这将给我们:
"there"
""
"are"
"more"
"than"
"three"
"commas"
特殊字符注意
如前所述,regex
在split()
方法中作为定界符传递的参数是一个正则表达式。如果要使用特殊字符的分隔符,则必须确保对特殊字符进行转义。例如,*
字符表示以下字符的一个或多个实例。
正则表达式中有12个这样的字符。它们是:\
,^
,$
,.
,|
,?
,*
,+
,(
,)
,[
,{
。你可以看到他们在正则表达式的意思在这里。
如果要String
在这些字符之一处拆分a ,则必须特别注意在方法参数中转义这些字符。我们可以使用此方法的一种方法是使用反斜杠\
。例如:
string.split("\\|");
string
在|
字符处拆分变量。我们在这里使用两个反斜杠,因为我们需要首先转义反斜杠的Java含义,因此可以将反斜杠应用于|
字符。
取而代之的是,我们可以使用正则表达式字符集。这是指将要转义的特殊字符放在方括号内。这样,特殊字符被视为普通字符。例如,我们可以|
这样说:
string.split("[|]");
逃脱特殊字符的另一种方法是使用Pattern.quote()
:
string.split(Pattern.quote("|"));
结论
split()
JavaString
类的方法是非常有用且经常使用的工具。大多数数据,特别是从读取文件中获得的数据,都需要进行一些预处理,例如拆分字符串,以从中获取有意义的信息。
在本文中,我们讨论了如何在Java中拆分字符串。
声明:本文部分素材转载自互联网,如有侵权立即删除 。
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
8. 精力有限,不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别
丞旭猿论坛
暂无评论内容