java split

Java中的 split  函数是用于按指定字符(串)或正则去分割某个字符串,结果以字符串数组形式返回;

例如:

[java] view plaincopy

  1. String str="[email protected]";
  2. String[] a = str.split("@");
  3. System.out.println("处理结果: "+a[0]+","+a[1]);   //输出的是: 处理结果: 1234,abc

对于分割的字符(串),通常是常见,普通的,没什么问题;

但是对某些特殊字符,如果字符(串)正好是正则的一部分,则需要转义才能使用,

这些字符有 | , + , * , ^ , $ , / , | , [ , ] , ( , ) , - , . , \等, 因它们是正则表达式中的一部分, 所以如果想用该字符本身, 这些字符需要进行转义才能表示它本身;

例如:

想用 | 竖线去分割某字符,因 | 本身是正则表达式中的一部分,所以需要 \ 去转义,因转义使用 \, 而这个 \ 正好也是正则表达式的字符,所以还得用一个 \ , 所以需要两个 \\。

[java] view plaincopy

  1. String str="5678|XYZ";
  2. String[] b = str.split("\\|");  //注意这里用两个 \\,而不是一个\
  3. System.out.println("处理结果: "+b[0]+","+b[1]);   //输出的是: 处理结果: 5678,XYZ

再来看看:

[java] view plaincopy

  1. String str="5678|XYZ";
  2. String[] b = str.split("|");  //注意直接使用|,该字符是正则表达式的一部分,
  3. String x="处理结果: ";
  4. for(int i=0;i<b.length;i++){
  5. x=x+b[i]+",";
  6. }
  7. System.out.println(x);   //输出的是: 处理结果: 5,6,7,8,|,X,Y,Z,

可能我们人为主观感觉是用 | 来分割希望得到 5678 和 XYZ,因用特殊字符,实际结果是得到意外的结果;

今天下午就这个地方耗了几个小时,头晕才发现问题所在,555....

所以指定分割的字符(串)时,最好不要包含用于正则表达式本身的字符,如上面的红色字符;

时间: 2024-11-10 15:29:20

java split的相关文章

Java split方法源码分析

Java split方法源码分析 1 public String[] split(CharSequence input [, int limit]) { 2 int index = 0; // 指针 3 boolean matchLimited = limit > 0; // 是否限制匹配个数 4 ArrayList<String> matchList = new ArrayList<String>(); // 匹配结果队列 5 Matcher m = matcher(inp

Java Split以竖线作为分隔符

今天用到了Java中的Split函数,要以“|”作为分割符,当输入竖线时,发现出错,这个问题应该很久前就遇到过,不过太长时间就给忘了! 网上一搜,就找到了答案,这是因为split里面有两个参数,其中一个是“limit”,表示匹配参数的个数,另一就是匹配参数,split不是简单的匹配,里面输入的是“正则表达式”,所以问题就在这个正则表达式上了. 如果要实现以“|”作为分割符,那么应该输入“\\|”,而不是“|”. 所以应当是: str.split("\\|"); 注意:网上有个事“//|

java split(regex)和split(regex, limit)方法的使用技巧

在java字符串方法中有一个非常好用的方法split(),该方法可以把字符串直接分割为数组此方法有两个重载. 一是:split(regex),参数为要分隔的字符串或者正则表达式. 二是:ss.split(regex, limit).此方法可以的第二个参数一般不太常用, 这两个方法api给的解释是:limit 参数控制模式应用的次数,因此影响所得数组的长度.如果该限制 n 大于 0,则模式将被最多应用 n - 1 次,数组的长度将不会大于 n,而且数组的最后一项将包含所有超出最后匹配的定界符的输入

Java split(&quot;.&quot;) 和 split(&quot;\\.&quot;)

Java split(".") 和 split("\\.") 问题描述 使用 . 分解 IP 的各个段,并打印,如:192.168.10.123,分解为 192 168 10 123 使用如下程序处理: /** * Created by Miracle Luna on 2019/11/10 */ public class SplitIP { public static void main(String[] args) { String ip = "192.

java split小结(转)

2016.03.27下午参加华为机试,简单扫了一眼几个题的标题,选择了一道字符串问题,其实该题非常非常的简单,可以说是简单的不能再简单了,而且有很多种解法,上机时我选择了直接借用java提供的一些函数,以为自己能很快解决问题,结果却卡了很久,机子上测试时一直没能通过 晚上回到寝室,改了一下前面的代码,解题方法没变,经测试应该是正确的 具体题目记不大清楚了,题目大意是:输入一字符串,若该字符串中间包含"*",去掉"*"后输出:若该字符串首字符或尾字符为"*&

Java - split . 失败

我们经常要用到String的split方法,然而当我们想当然的认为如果用.分割的话会报错:java.lang.ArrayIndexOutOfBoundsException: 0 为什么?解决方法是什么? 原因是split方法的参数其实是正则表达式,而.在正则表达式中有特殊含义,如果想要用.分割字符串的话,正确做法是: String[] words = line.split("\\.");

java Split 用法

在java.lang包中有String.split()方法,返回是一个数组 我在应用中用到一些,给大家总结一下,仅供大家参考: 1.如果用“.”作为分隔的话,必须是如下写法,String.split("\\."),这样才能正确的分隔开,不能用String.split("."); 2.如果用“|”作为分隔的话,必须是如下写法,String.split("\\|"),这样才能正确的分隔开,不能用String.split("|");

Java Split()方法按点(.)切分注意细节

按点(.)切分,必须要注意转义!如:split("\\."). 例子: [java] view plain copy print? public class Test { public static void main(String[] args) { String s = "adhahd.txt"; String t[] = s.split("\\."); for(int i = 0; i < t.length; i++){ System

Java - split()函数和trim()函数的使用方法

split()函数和trim()函数的使用方法 本文地址: http://blog.csdn.net/caroline_wendy/article/details/24465141 详细參考Java API: http://docs.oracle.com/javase/6/docs/api/java/lang/String.html split()函数是依据參数如",", "-", " "等, 切割String字符串, 返回一个String的数组

java split进行字符串分割

在java.lang包中有String.split()方法,返回是一个数组 我在应用中用到一些,给大家总结一下,仅供大家参考: 1.如果用"."作为分隔的话,必须是如下写法,String.split("\\."),这样才能正确的分隔开,不能用String.split("."); 2.如果用"|"作为分隔的话,必须是如下写法,String.split("\\|"),这样才能正确的分隔开,不能用String.s