`
qindongliang1922
  • 浏览: 2184038 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
7265517b-f87e-3137-b62c-5c6e30e26109
证道Lucene4
浏览量:117536
097be4a0-491e-39c0-89ff-3456fadf8262
证道Hadoop
浏览量:125922
41c37529-f6d8-32e4-8563-3b42b2712a50
证道shell编程
浏览量:59912
43832365-bc15-3f5d-b3cd-c9161722a70c
ELK修真
浏览量:71301
社区版块
存档分类
最新评论

你不知道的Java的split的小问题

    博客分类:
  • JAVA
阅读更多

有时候,我们的一些业务数据,有些定义的是按某个分割符分割数据,然后一行一行的,处理这种数据时候,要务必小心,因为它简单,不用维护类似json格式的数据或者一个对象,而是直接通过下标位置来访问数据的,相信这种场景大家也都接触过,当然弊端也是显而易见的,如果位置放错或者代码使用不当,都会造成一些问题,所以使用这种方式时,一会都会约定一些内容,比如行分隔符,列分割符等,下面来看一个小问题,先看下面一段代码:


      String line1="1#2#3";//期待长度3,结果是3
        System.out.println(line1.split("#").length);

        String line2="1#2#3##";//期待长度5,实际结果是3 , 有问题? 
        System.out.println(line2.split("#").length);



运行完,你会发现第二段代码的数组的长度竟然与你想的不一致?为什么?我们来看
官网api解释:

/**
The limit parameter controls the number of times the pattern is applied and therefore affects the length of the resulting array. If the limit n is greater than zero then the pattern will be applied at most n - 1 times, the array's length will be no greater than n, and the array's last entry will contain all input beyond the last matched delimiter. If n is non-positive then the pattern will be applied as many times as possible and the array can have any length. If n is zero then the pattern will be applied as many times as possible, the array can have any length, and trailing empty strings will be discarded.
*/

public String[] split(String regex,int limit)

 



如果limit是负数,那么它会尽可能匹配到所有的这个数组的个数,如果是0那么尽可能匹配出现的元素,但是空字符串将会被就丢弃,但我们不希望它丢弃,因为丢弃就意味着有业务字段缺失,所以来看下最终的写法:

        String line3="1#2#3##";//正确的写法 
        System.out.println(line3.split("#",-1).length);

6
3
分享到:
评论
4 楼 flicking2015 2016-01-25  
细节问题。
3 楼 williamou 2016-01-22  
用apache StringUtils的split相关方法吧
2 楼 qindongliang1922 2016-01-22  
yuxuguang 写道
可以试试guava的Splitter

Splitter底层也是调的jdk源码吧
1 楼 yuxuguang 2016-01-22  
可以试试guava的Splitter

相关推荐

    JAVA_split_用法

    ### JAVA_split_用法详解 在Java编程语言中,`String`类...通过以上介绍和示例,我们可以看到`split()`方法在Java中的强大功能,它能够帮助开发者灵活地处理字符串的分割任务,是Java字符串操作中不可或缺的一部分。

    java中的split的用法

    ### Java中的split方法详解 #### 一、引言 在Java编程中,字符串处理是非常常见的需求之一。`String`类提供了多种方法来处理字符串,其中`split`方法因其灵活性和强大的分割功能而被广泛使用。本文将深入探讨`...

    Java中Split的用法及注意

    Java 中 Split 的用法及注意 Java 中的 Split 方法是通过正则表达式来拆分字符串的,它可以将一个字符串分割为子字符串,然后将结果作为字符串数组返回。该方法的语法为 `stringObj.split(regex, [limit])`,其中 `...

    Java字符串分隔方法split实践

    如果你不希望这些空白,可以在正则表达式中添加`\b`来匹配边界,或者使用`trim()`方法去除额外的空格。 总的来说,Java中的`split()`方法是处理字符串的强大工具,它利用正则表达式的灵活性来满足各种分割需求。...

    Javasplit.java

    文件目录转json格式

    java_spliter.zip_java split_java spliter_分割文件

    通过研究这个程序,初学者可以更深入地了解Java I/O系统,并且能够应用这些知识去解决实际问题,如处理大量数据或优化文件传输。同时,这也是一个很好的实践案例,展示了如何将理论知识转化为实际的编程技能。

    java的String[] split 示例

    在Java编程语言中,`String`类提供了许多用于操作字符串的方法,其中之一便是`split`方法。这个方法在处理文本数据时极为有用,特别是在需要根据特定的分隔符将字符串分割成多个子串的情况下。下面,我们将深入探讨`...

    java split()方法实用案例

    java split()方法实用案例

    java split()使用方法解析

    Java split() 函数使用方法解析 Java split() 函数是 Java 编程语言中一个非常常用的字符串分割函数,它可以将一个字符串按照指定的分隔符分割成多个子字符串,并将其存储在一个字符串数组中。下面我们将详细介绍 ...

    split this is a split java develop utils package

    标题提到的"split this is a split java develop utils package"很可能是指一个专门处理字符串分隔的Java工具包。这个包可能包含了用于解析、拆分和操作字符串的实用方法,对于日常开发工作非常有用。 描述中的...

    java split用法详解及实例代码

    Java中的`split()`方法是String类的一个非常重要的成员函数,用于根据给定的正则表达式将一个字符串分割成多个子字符串,并返回一个字符串数组。这个方法在处理文本数据、解析配置文件或从复杂的字符串中提取信息时...

    input_input().split()_input_split_mapReduce_java_

    在进行map计算之前,mapreduce会根据输入文件计算输入分片(input split),每个输入分片(input split)针对一个map任务,输入分片(input split)存储的并非数据本身,而是一个分片长度和一个记录数据的位置的数组...

    java正则表达式匹配全角空格

    本文将详细介绍如何使用Java中的`split()`方法,并结合正则表达式来处理全角空格和半角空格的问题。 #### 一、背景介绍 在处理文本数据时,经常会遇到不同类型的空格字符。除了最常见的半角空格(ASCII码为32)...

    java 中用split分割字符串,最后的空格等不被拆分的方法

    当你遇到上述问题,即最后一个字段后面有多个连续的制表符,但这些空格或制表符没有被正确拆分,你可以通过向 `split()` 方法传递一个额外的参数来解决这个问题: ```java String[] values = line.split("\t", -1);...

    Java使用split截取字符串过程解析

    `split()` 方法的行为基于Java的正则表达式引擎,它可以处理复杂的模式匹配,包括但不限于字母、数字、特殊字符等。例如,你可以使用 `[a-zA-Z]` 匹配任何字母,`\d` 匹配数字,`[^\w\s]` 匹配非单词字符和非空白...

    java 小飞侠的资源

    除了这两个文件,"java 小飞侠"的标签可能指的是一个专门讨论Java技术、分享教程、代码示例或者解答问题的社区或者个人博客。在这个社区或博客中,可能会涵盖各种Java相关的主题,如面向对象编程、集合框架、异常...

    Java的split方法使用详解

    Java的`split`方法是String类的一个非常重要的成员函数,用于根据指定的分隔符将字符串分割成多个子字符串,并返回一个字符串数组。这个方法在处理数据时非常有用,例如解析CSV格式的数据或者处理带有固定分隔符的...

    C#中split的使用

    虽然`Split`方法非常方便,但处理大量数据时可能会有性能问题。对于大型字符串,可能需要考虑使用其他方法,如正则表达式匹配或自定义分割算法,来提高效率。 综上所述,`Split`方法是C#中处理字符串的强大工具,它...

    java之学习正则split分割的典型案例

    首先要把字符串分割开用正则中的split方法 * 2,定义一个和字符串数组一样大小的int数组 * 3,把字符串数组转换成数字字符 * 4,排序,用sort方法 * 5,拼接成新的字符串

    浅析Java中Split函数的用法技巧

    Java中的`String.split()`方法是处理字符串的强大工具,它能够根据指定的分隔符将一个字符串分割成多个子字符串,并将这些子字符串存储在一个数组中。这个方法在处理文本数据时非常常见,尤其是在解析CSV格式的数据...

Global site tag (gtag.js) - Google Analytics