精华内容
下载资源
问答
  • java 切割字符串

    2015-08-19 10:20:12
    java"]public class Spilt { public static void main(String[] args) { String sourceStr = "11111|22222|33333|44444|55555"; String[] sourceStrArray = sourceStr.split("\\|"...
    public class Spilt {

    public static void main(String[] args) {
    String sourceStr = "11111|22222|33333|44444|55555";
    String[] sourceStrArray = sourceStr.split("\\|");
    for (int i = 0; i < sourceStrArray.length; i++) {
    System.out.println("part"+(i+1)+":"+sourceStrArray[i]);
    }


    }
    }
    展开全文
  • java 切割字符串split用法

    千次阅读 2016-04-13 09:46:43
    java 切割字符串split用法
      System.out.println(":ab:cd:ef::".split(":").length);//末尾分隔符全部忽略  
      System.out.println(":ab:cd:ef::".split(":",-1).length);//不忽略任何一个分隔符  
      System.out.println(StringUtils.split(":ab:cd:ef::",":").length);//最前面的和末尾的分隔符全部都忽略,apache commons  
      System.out.println(StringUtils.splitPreserveAllTokens(":ab:cd:ef::",":").length);//不忽略任何一个分隔符 apache commons   
    输出:  
    4  
    6  
    3  

    6  


    看了下jdk里String类的public String[] split(String regex,int limit)方法,感觉平时不太会用这方法,以为在用正则表达式来拆分时候,如果匹配到的字符是最后一个字符时,会拆分出两个空字符串,例如"o"split("o",5) or "o"split("o",-2)时候 结果是"" "" 也就是下图中红框里的内容,所以平时一般都用split(String regex) 方法,其实也就等同于split(String regex,0)方法,把结尾的空字符串丢弃! 




    String的split方法用到的参数是一个正则式,虽然强大,但是有时候容易出错。而且string并没有提供简化版本。org.apache.commons.lang.StringUtils提供的split改变了这一状况,开始使用完整的字符串作为参数,而不是regex。同时,对类似功能的jdk版本的StringTokenizer,在内部方法splitWorker中有段注释:Direct code is quicker than StringTokenizer.也就是说,这个是更快的一个工具了~~ 

    StringUtils里的split和splitPreserveAllTokens 底层都是调用splitWorker方法实现的 
    下面分别来理解下两个私有的splitWorker方法:
     

    Java代码  收藏代码
    1. private static String[] splitWorker(String str, char separatorChar, boolean preserveAllTokens)  
    2. {  
    3.         // Performance tuned for 2.0 (JDK1.4)  
    4.   
    5.         if (str == null) {  
    6.             return null;  
    7.         }  
    8.         int len = str.length();  
    9.         if (len == 0) {  
    10.             return ArrayUtils.EMPTY_STRING_ARRAY;  
    11.         }  
    12.         List list = new ArrayList();  
    13.         int i = 0, start = 0;  
    14.         boolean match = false;  
    15.         boolean lastMatch = false;  
    16.         while (i < len) {  
    17.             if (str.charAt(i) == separatorChar) {  
    18.                 if (match || preserveAllTokens) {  
    19.                     list.add(str.substring(start, i));  
    20.                     match = false;  
    21.                     lastMatch = true;  
    22.                 }  
    23.                 start = ++i;  
    24.                 continue;  
    25.             }  
    26.             lastMatch = false;  
    27.             match = true;  
    28.             i++;  
    29.         }  
    30.         if (match || (preserveAllTokens && lastMatch)) {  
    31.             list.add(str.substring(start, i));  
    32.         }  
    33.         return (String[]) list.toArray(new String[list.size()]);  
    34.     }  
    是一个核心方法,用于拆分字符串,其中字符c表示分隔符,另外布尔变量b表示c在首尾的不同处理方式。为真,则在首位留一个""的字符串。但是在中间是没有作用的。该方法执行如下操作: 
      如果字符串为null,则返回null。 
      如果字符串为"",则返回""。 
      用i作为指针遍历字符串,match和lastMatch分别表示遇到和最后遇到可分割的内容。 
        如果字符串中第一个就遇到c,则看b的值,如果为真,则会在结果数组中存入一个""。如果没遇到,match置真,lastMatch置假,表示有要分割的内容。 
        一旦遇到c,则在结果数组中输出字符串在i之前的子字符串,并把起始点调整到i之后。且match置假,lastMatch置真。 
      遍历结束,如果match为真(到最后也没有遇到c),或者lastMatch和b同为真(最后一个字符是c),则输出最后的部分(如果是后者,则会输出一个"")。
     


    Java代码  收藏代码
    1. private static String[] splitWorker(String str, String separatorChars, int max, boolean preserveAllTokens)  
    2. {  
    3.         // Performance tuned for 2.0 (JDK1.4)  
    4.         // Direct code is quicker than StringTokenizer.  
    5.         // Also, StringTokenizer uses isSpace() not isWhitespace()  
    6.   
    7.         if (str == null) {  
    8.             return null;  
    9.         }  
    10.         int len = str.length();  
    11.         if (len == 0) {  
    12.             return ArrayUtils.EMPTY_STRING_ARRAY;  
    13.         }  
    14.         List list = new ArrayList();  
    15.         int sizePlus1 = 1;  
    16.         int i = 0, start = 0;  
    17.         boolean match = false;  
    18.         boolean lastMatch = false;  
    19.         if (separatorChars == null) {  
    20.             // Null separator means use whitespace  
    21.             while (i < len) {  
    22.                 if (Character.isWhitespace(str.charAt(i))) {  
    23.                     if (match || preserveAllTokens) {  
    24.                         lastMatch = true;  
    25.                         if (sizePlus1++ == max) {  
    26.                             i = len;  
    27.                             lastMatch = false;  
    28.                         }  
    29.                         list.add(str.substring(start, i));  
    30.                         match = false;  
    31.                     }  
    32.                     start = ++i;  
    33.                     continue;  
    34.                 }  
    35.                 lastMatch = false;  
    36.                 match = true;  
    37.                 i++;  
    38.             }  
    39.         } else if (separatorChars.length() == 1) {  
    40.             // Optimise 1 character case  
    41.             char sep = separatorChars.charAt(0);  
    42.             while (i < len) {  
    43.                 if (str.charAt(i) == sep) {  
    44.                     if (match || preserveAllTokens) {  
    45.                         lastMatch = true;  
    46.                         if (sizePlus1++ == max) {  
    47.                             i = len;  
    48.                             lastMatch = false;  
    49.                         }  
    50.                         list.add(str.substring(start, i));  
    51.                         match = false;  
    52.                     }  
    53.                     start = ++i;  
    54.                     continue;  
    55.                 }  
    56.                 lastMatch = false;  
    57.                 match = true;  
    58.                 i++;  
    59.             }  
    60.         } else {  
    61.             // standard case  
    62.             while (i < len) {  
    63.                 if (separatorChars.indexOf(str.charAt(i)) >= 0) {  
    64.                     if (match || preserveAllTokens) {  
    65.                         lastMatch = true;  
    66.                         if (sizePlus1++ == max) {  
    67.                             i = len;  
    68.                             lastMatch = false;  
    69.                         }  
    70.                         list.add(str.substring(start, i));  
    71.                         match = false;  
    72.                     }  
    73.                     start = ++i;  
    74.                     continue;  
    75.                 }  
    76.                 lastMatch = false;  
    77.                 match = true;  
    78.                 i++;  
    79.             }  
    80.         }  
    81.         if (match || (preserveAllTokens && lastMatch)) {  
    82.             list.add(str.substring(start, i));  
    83.         }  
    84.         return (String[]) list.toArray(new String[list.size()]);  
    85.     }  
    也是一个核心方法,用于拆分字符串,其与上一个方法的不同之处在于其分隔符用字符串表示一组字符,且增加一个max变量,表示输出的字符串数组的最大长度。另外注意该方法的b如果为真,会在首尾及中间起作用,且如果分隔符字符串长度大于1,则数组中的""会更多(根据分隔符字符的数量)。该方法执行如下操作: 
      如果字符串为null,则返回null。 
      如果字符串为"",则返回""。 
      之后的处理分三种情况,分别是分隔符字符串为null,则默认为" ";分割符字符串长度为1;分割符字符串为普通字符串。这三种处理的不同只是在当前遍历中的字符的判断问题。 
        1.利用Character.isWhitespace方法判断每个字符是否为" "。 
        2.先把字符串转化为一个char,然后就和前一个splitWorker方法类似。 
        3.利用indexOf方法查找当前字符是否在分隔符字符串中,然后就和前一个splitWorker方法类似。 
        需要注意的是,如果输出的数组的数量已经等于max的值,则把指针直接挪到最后,等待下次遍历的时候直接跳出。同时由于lastMatch和match都置为假,最后也不会输出""了。 
       遍历结束,如果match为真(到最后也没有遇到c),或者lastMatch和b同为真(最后一个字符在分隔符字符串中),则输出最后的部分(如果是后者,则会输出一个"")。
     

    展开全文
  • Java切割字符串

    2010-08-25 20:52:50
    java"] String s = new String("2_8_7_4_3_9_1"); String[] arr = s.split("_"); String s = new String("2_8_7_4_3_9_1"); StringTokenizer commaToker = new ...

    String s = new String("2_8_7_4_3_9_1");
    String[] arr = s.split("_");

    String s = new String("2_8_7_4_3_9_1");
    StringTokenizer commaToker = new StringTokenizer(s, "_");
    String[] arr = new String[commaToker.countTokens()];

    展开全文
  • 定义Java程序中所有的字符串文字(例如"abc" )都可以被看作是实现此类的实例请问为什么不叫对象?原则上实例是堆中实实在在的数据,对象是类的实例,类是对象的类型。具体参考王华:Java类、对象和实例的理解​...
  • java.lang.String的split()方法, JDK 1.4 or laterpublicString[]split(Stringregex,int limit)示例代码public class StringSplit {public static void main(String[] args) {String sourceStr = "1,2,3,4,5";...
  •  java在使用split切割字符串的时候,偶尔会如下特殊字符串,如下 String aa = "D:/apache-tomcat-7.0.90(2)/wtpwebapps/VedioManage/mp4/test.mp4"; String bb= "D:/apache-tomcat-7.0.90(2)/...
  • Java切割字符串,删除最后一个字符

    千次阅读 2019-05-24 08:57:36
    切割字符串: String str = “1,2,3,4,5”; String[] strArray = str.split(","); for (int i = 0; i < strArray.length; i++) { System.out.println(strArray[i]); } // 最多分割出3个字符串 int maxSplit = 3; ...
  • 按效率排:1、StringTokenizer切割java.util中的一个类...nextToken可以获取它的下一个字符串,其中delim为分隔符。2、..split("*")分割;最方便,运用最多的,不解释。String[] split = data.split("\n");if (sp...
  • 我们在Java中如果用到处理要分隔字符串,不免会用到String的split(String regex)函数,这时候我们要注意的。如果想以回车来分隔字符串,很多同学都会这样做。下面是例子:String[] res = str.split("\n");但是这样...
  • importjava.util.regex.*;importjava.util.LinkedList;publicclassSplitter{privatestaticfinalPatternDEFAULT_PATTERN=Pattern.compile("\\s+");privatePatternpattern;privatebooleankeep_delimite...
  • 一件事,我帮助缓和这是创建一个变量,其名称代表正则表达式,并使用Java String格式来帮助。喜欢这个: static public final String WITH_DELIMITER = "((?$s)|(?=%1$s))"; ... public void someMethod() { ... ...
  • 我们在Java中如果用到处理要分隔字符串,不免会用到String的split(String regex)函数,这时候我们要注意的。 如果想以回车来分隔字符串,很多同学都会这样做。下面是例子:   String[] res = str.split("\...
  • java切割字符串,获得文件名

    千次阅读 2010-08-28 13:18:00
    Java中处理一些路径相关的问题的时候,如要取出ie浏览器上传文件的文件名,由于ie会把整个文件路径都作为文件名上传,需要用java.lang.String中的replaceAll或者split来处理。如: <br />上传文件路径...
  • import java.util.*;import java.io.*;public class MyTest1 {List ipList = new ArrayList();List localList = new ArrayList();List logList = new ArrayList();List timeList = new ArrayList();List ip2List = n...
  • //这里切割字符串了 if(jc.jckssj.contains(".")){ mytime=jc.jckssj.substring(0,jc.jckssj.indexOf(".")); }else{ mytime=jc.jckssj; } 此时 mytime就是切割后的字符串 转载于:...
  • 之前做过对字符切割等操作,现在也忘了差不多(忘了做笔记),所有再回头总结下。Matcher(英文解释:匹配器)常用方法:(我也只写了个别的案例用法)find():尝试查找与该模式匹配的输入序列的的下一个子序列。 find(int ...
  • public classDemo0722 {public static voidmain(String[] args) {String a= "测试一下怎么截取字符串123450,随便输UYGqwer09874UUBi0jsad这样就可以吗???";String reg="[\u4e00-\u9fa5]";Pattern pat=Pattern....
  • java split切割字符串

    2020-07-16 13:55:21
    String address = "107@11.com;mengliang@kungeek.com;... String[] str = address.split("\\;|;"); for(String s : str){ System.out.println(s);...用法:先用\进行转义,然后用 | 加上想切割的分隔符
  • 标签(空格分隔): java方法一:split() 方法——JDK 1.4 or later##例子:public class StringSplit {public static void main(String[] args) {//一般用法String sourceStr = "1,2,3,4,5";String[] sourceStrArray ...
  • 定义Java程序中所有的字符串文字(例如"abc" )都可以被看作是实现此类的实例请问为什么不叫对象?原则上实例是堆中实实在在的数据,对象是类的实例,类是对象的类型。具体参考王华:Java类、对象和实例的理解​...
  • Java按指定字符切割字符串

    千次阅读 2019-04-13 20:42:14
    @Test public void getStringList(){ String str = "begin&我是1&我是2&我是3"; String[] strlist = str.split("&"); System.out.println(strlist.length);... for(String s : strlist){ ...
  • 开发中偶尔遇到切割字符串的场景,总结了几种常见的。 首先定义一个字符串: String str = "aaa,123 567 rrr,890"; 1.按照某一个字符切割字符串(比如按照,一种字符切割) String[] strArr = str.split(",");...
  • java分割字符串,分割string,可以根据多个条件去分割。比如逗号,分号,逗号或者分号。比如一个字符串:“abc,def;gh,ij;k;lm,no,p;qr,st”按逗号和分号分隔,,这里应该分隔成10个字串,,java怎么写??如果用...
  • 之前经常遇到切割字符串的情况,这里把常见的场景总结一下: 1 // 以空格切割 2 String s1 = "dew qefdewrfr freqg gtrh yt hy"; 3 String[] words1 = s1.split("\\s+"); 4 5 // 以 . 切割 6 S...
  • 现在我想切割一个字符串,如下, String string="@chat@@chat你好@chat"; 要求是把仅有@chat而前面没有额外的@的字符串切割出来, 例子中的结果就是@@chat你好,请正则大佬教教萌新
  • Java中通过split可以完成对字符串切割,结果返回一个字符串数组。 public String[] split(String regex); 例如: String str = "aaa bbb ccc"; String[] array = str.split(" "); 可以将字符串“aaa bbb ccc...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 751
精华内容 300
关键字:

java切割字符串

java 订阅