`
zhouYunan2010
  • 浏览: 206408 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类

String的spilt方法源码分析

阅读更多
/**
 * String 类得split方法解析。
 * 实际是调用Pattern类得split方法
 */
public class AboutSplit {
    public String[] split(String regex, int limit) {
    	return Pattern.compile(regex).split("本String字符串", limit);
    }
	/**
	 * 关于limit:limit决定数组的长度
	 * 当limit为0时数组长度不受限制,并且将剔除尾部空串
	 * 当limit为负时数组长度不受限制
	 * 当limit长度大于0,数组长度将<=limit,而且数组的最后一个元素将包含匹配符后面的所有字符
	 */
	public String[] split(CharSequence input, int limit) {
        int index = 0;
        boolean matchLimited = limit > 0;
        ArrayList<String> matchList = new ArrayList<String>();
        Matcher m = Pattern.matcher(input); //此pattern为Pattern.compile(regex)返回的Pattern对象

        // Add segments before each match found
        while(m.find()) {
            if (!matchLimited || matchList.size() < limit - 1) { //默认limit为0
                String match = input.subSequence(index, m.start()).toString();	//比如a:b:c,返回a。m.start()返回第一个匹配字符的索引即1
                matchList.add(match);	//存入List
                index = m.end();	//返回最后一个匹配字符的后一个字符的索引,这里是2
            } else if (matchList.size() == limit - 1) { // 最后一个元素
                String match = input.subSequence(index,
                                                 input.length()).toString();
                matchList.add(match);
                index = m.end();
            }
        }

        // 没有找到匹配串
        if (index == 0)
            return new String[] {input.toString()};

        // 把最后一部分的片段添加进来
        if (!matchLimited || matchList.size() < limit)
            matchList.add(input.subSequence(index, input.length()).toString());

        // Construct result
        int resultSize = matchList.size();
        if (limit == 0)	//如果limit为0
            while (resultSize > 0 && matchList.get(resultSize-1).equals(""))
                resultSize--;	//剔除尾部空串
        String[] result = new String[resultSize];
        return matchList.subList(0, resultSize).toArray(result);
    }
}
分享到:
评论
1 楼 cumtlu 2011-10-16  

相关推荐

    f_spilt函数.txt

    方便直接行列拆分,灵活运用SQL SERVER 函数,方便直接SQL语句调用函数,便于实现查询运用到存储过程当中。适合刚入门的小伙伴运用学习。

    Spilt_VDN设备预测方案实现培训.zip-LF_aa

    文件切分 $ split -b 200m VDN设备预测方案实现培训.zip Spilt_VDN设备预测方案实现培训.zip-LF_ 文件合并 $ cat Spilt_VDN设备预测方案实现培训.zip-LF_* &gt; VDN设备预测方案实现培训.zip

    Java中String常见问题

     str.spilt("\s+")  以上支持:空白字符""、换行" "、tab制表符" "、回车""。  3.拼接重复的字符串  3.1common类的stringutils工具方法  Stringstr="abcd";  Stringrepeated=StringUtils.repeat(str,3)...

    vb.NET中split使用方法宝典

    非常实用的VB.NET中使用split的方法,介绍详细

    spilt_lcm.job.airgap.list1613011158574792136.lcmbiar-LF_aa

    $ split -b 210m lcm.job.airgap.list1613011158574792136.lcmbiar spilt_lcm.job.airgap.list1613011158574792136.lcmbiar-LF_ $ cat spilt_lcm.job.airgap.list1613011158574792136.lcmbiar-LF_* &gt; lcm.job.airgap...

    spilt_lcm.job.airgap.list1613011158574792136.lcmbiar-LF_ab

    $ split -b 210m lcm.job.airgap.list1613011158574792136.lcmbiar spilt_lcm.job.airgap.list1613011158574792136.lcmbiar-LF_ $ cat spilt_lcm.job.airgap.list1613011158574792136.lcmbiar-LF_* &gt; lcm.job.airgap...

    spilt_lcm.job.airgap.list1613011158574792136.lcmbiar-LF_ac

    $ split -b 210m lcm.job.airgap.list1613011158574792136.lcmbiar spilt_lcm.job.airgap.list1613011158574792136.lcmbiar-LF_ $ cat spilt_lcm.job.airgap.list1613011158574792136.lcmbiar-LF_* &gt; lcm.job.airgap...

    JavaScript Split()方法

    split()方法的定义和用法: split()方法可以利用字符串的子字符串的作为分隔符将字符串分割为字符串数组,并返回此数组。 注:作为分割符的子字符串不会成为返回的数组的元素的一部分或者数组元素的一员。 这里只介绍...

    c#中如何使用spilt分隔数据

    c#中使用split取相应位置的字符!简单快捷!

    python(5).docx

    for i in a: s=s+float(i) print(len(a)) print("{:.3f}".format(s)) Python中的spilt方法只能通过指定的某个字符分割字符串,如果需要指定多个字符,需要用到re模块里的split方法。 import re s=input() x=re....

    Spilt_VDN设备预测方案实现培训.zip-LF_ab

    文件切分 $ split -b 200m VDN设备预测方案实现培训.zip

    python 将list转成字符串,中间用符号分隔的方法

    今天小编就为大家分享一篇python 将list转成字符串,中间用符号分隔的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    keras model.fit 解决validation_spilt=num 的问题

    主要介绍了keras model.fit 解决validation_spilt=num 的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    Python计算指定日期是今年的第几天(三种方法)

    今天早上和腾讯面试官进行了视频面试,由于音量和网络以及我的垃圾电脑的原因,个人感觉黄了… 最后面试官给了我一道简单的计算题:指定日期是今年的第几年 ... 使用字符串的spilt方法解析 ''' _year =

    oracle_split_函数_返回数组

    最近在oracle 中用到拆分字符串返回数组...这个方法如下: (方法一)用到后面出现 了bug 。哎弄了一下午就给别人测试了一下bug。(方法一)根本就行不通。于是我就自己改写了。(方法二)大家如有需要的请参考方法二:

    xsplit V0.98.rar 文件分割

    相当于把当成网盘用,网上当然也有网盘,但一般都有限制,所以推荐用此方法存文件,没有限制,就是花点的时间,但可以一劳永逸。网盘上传的文件有时间限制、大小限制等。 WinRAR也有类似的功能,但没spilt好。 ...

    基于机器学习的python车牌识别系统源码.zip

    基于机器学习的python车牌识别系统源码.zip将汽车照片的绝对路径输入,先进行图像预处理,通过神经网络分类,最后输出车牌号 实现程序: Gui.py 2. 图像预处理将源图片进行均值迁移,然后筛选蓝色,进行开操作消除...

    PDF Split-Merge V3.1_汉化绿色特别版 允许分割合并大的PDF文件到小PDF文件

    PDF Split Merge是1个独立工具用于分割,合并PDF文件,允许你分割/合并大的PDF文件到小一些的PDF文件。 PDF Split Merge提供易用的图形界面应用程序和命令行应用程序。 分割功能可以让你基于页组,页范围分割1个或多...

    python中从str中提取元素到list以及将list转换为str的方法

    在python中时常需要从字符串类型str中提取元素到一个数组list中,例如str是...好在python中str类型本身自带了两种方法(method)提供了相应的功能。 str转为list 使用split方法 基本使用 &lt;list&gt; = &lt;str&gt;.split() &lt;

Global site tag (gtag.js) - Google Analytics