/**
* 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);
}
}
分享到:
相关推荐
### C#中使用Split方法分割字符串的多种技巧 在C#编程语言中,处理字符串是一项常见的任务。其中,`Split`方法是一种非常实用且高效的方式来根据特定的分隔符将字符串分割成数组。本文将详细介绍C#中使用`Split`...
方便直接行列拆分,灵活运用SQL SERVER 函数,方便直接SQL语句调用函数,便于实现查询运用到存储过程当中。适合刚入门的小伙伴运用学习。
文件切分 $ split -b 200m VDN设备预测方案实现培训.zip Spilt_VDN设备预测方案实现培训.zip-LF_ 文件合并 $ cat Spilt_VDN设备预测方案实现培训.zip-LF_* > VDN设备预测方案实现培训.zip
str.spilt("\s+") 以上支持:空白字符""、换行" "、tab制表符" "、回车""。 3.拼接重复的字符串 3.1common类的stringutils工具方法 Stringstr="abcd"; Stringrepeated=StringUtils.repeat(str,3)...
$ split -b 210m lcm.job.airgap.list1613011158574792136.lcmbiar spilt_lcm.job.airgap.list1613011158574792136.lcmbiar-LF_ $ cat spilt_lcm.job.airgap.list1613011158574792136.lcmbiar-LF_* > lcm.job.airgap...
$ split -b 210m lcm.job.airgap.list1613011158574792136.lcmbiar spilt_lcm.job.airgap.list1613011158574792136.lcmbiar-LF_ $ cat spilt_lcm.job.airgap.list1613011158574792136.lcmbiar-LF_* > lcm.job.airgap...
$ split -b 210m lcm.job.airgap.list1613011158574792136.lcmbiar spilt_lcm.job.airgap.list1613011158574792136.lcmbiar-LF_ $ cat spilt_lcm.job.airgap.list1613011158574792136.lcmbiar-LF_* > lcm.job.airgap...
首先,C++标准库提供了`std::getline`函数,用于从输入流(如`std::cin`或文件)中读取一行,然后`std::string`的`find`和`substr`方法可以用来根据特定分隔符分离字符串。例如,我们可以用空格作为分隔符,将一行...
本文将详细介绍如何使用Python将list转换成字符串,并在元素之间插入自定义分隔符的方法。 首先,Python中内置了一个非常方便的字符串方法`join()`,用于实现上述功能。`join()`方法接受一个可迭代对象作为参数,并...
现在,我们详细分析一下 `split()` 方法的各种用法: 1. **使用普通字符作为分隔符**: - 如果你只需要用一个简单的字符作为分隔符,例如逗号 `,`,你可以直接将该字符传入 `split()` 方法。例如: ```javascript...
文件切分 $ split -b 200m VDN设备预测方案实现培训.zip
本文提供了三种不同的方法来实现这个功能。这些方法对于日常编程或者面试中遇到类似问题时都非常实用。 首先,我们来看第一种方法,通过字符串的`split()`方法来解析日期。例如,给定的日期字符串"2020-3-26"可以...
### 分裂布雷格曼方法在L1正则化问题中的应用 #### 一、引言与背景 近年来,L1正则化优化问题因其在压缩感知领域的突破性进展而备受关注。压缩感知技术允许从有限的数据量中重建图像和信号,这极大地推动了信号...
如下所示: hist = model.fit(x,y, epochs=epoch_num, batch_size=32,callbacks=early_stopping...Unrecognized keyword arguments: {‘validation_spilt’: 0.003} TIPS:当不清楚具体顺序的时候,可在进到类函数里
- 对于Python3中处理字符串到十六进制的转换,以及`bytes`和`string`之间的互转,也有专门的转换方法和示例可供学习。 总的来说,`split()`和`join()`是Python中处理字符串和列表之间转换的核心方法,熟练掌握这两...
本文将详细介绍两种在Oracle中实现字符串分割的方法:第一种是通过创建类型和管道函数的方式;第二种则是通过循环和子字符串处理实现的。 #### 二、第一种实现方式:创建类型和管道函数 ##### 1. 创建类型 `TY_STR...
这两种自定义函数可以帮助开发者将字符串按指定分隔符拆分成数组,从而进行后续的数据处理和分析。需要注意的是,由于PL/SQL语言的限制,这些方法可能不如Java或其他支持内置字符串处理函数的语言那么直接和高效,但...
在MATLAB中,我们可以利用各种算法来实现这一过程,以便于后续的分析、识别或处理。"spilt2.m" 文件很可能包含了执行图像分割的MATLAB代码。 在MATLAB中进行图像分割,通常会用到以下几种方法: 1. **阈值分割**:...