返回信息流想按每个正则分割字符串 但是同时需要把该正则匹配出来的字符串也保留
比如 "aaa333aaa" 我想按\d+的方式分字符串 结果是"aaa" ""333" "aaa" 请问如何操作呢
还有为什么 String sLine = "200%r";
num = sLine.split("\\d+%",-1); // 这里使用-1作为参数
这样不能把"200%"和"r"分开呢
这是一条镜像帖。来源:北邮人论坛 / java / #22208同步于 2012/4/21
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
请问分割字符串
century
2012/4/21镜像同步3 回复
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
以前也想过这个问题。不过没找到现有的工具。
我试了试这样:
package demo;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexpUtils {
public static List<String> mmSplit(Pattern pattern, String str) {
List<String> result = new ArrayList<String>();
Matcher matcher = pattern.matcher(str);
int prevEnd = 0;
while (matcher.find()) {
int curBegin = matcher.start();
int curEnd = matcher.end();
if (prevEnd < curBegin) {
result.add(str.substring(prevEnd, curBegin));
}
result.add(matcher.group());
prevEnd = curEnd;
}
if (prevEnd < str.length()) {
result.add(str.substring(prevEnd, str.length()));
}
return result;
}
public static void testMmSplit(Pattern pattern, String str) {
List<String> res = mmSplit(pattern, str);
System.out.format("Split '%s' with '%s':\n", str, pattern.pattern());
for (String s : res) {
System.out.format("'%s'\n", s);
}
}
public static void main(String[] args) {
Pattern nums = Pattern.compile("\\d+");
testMmSplit(nums, "abc123def456ghi789jkl");
testMmSplit(nums, "012mno345pqr678");
testMmSplit(nums, "123456789");
testMmSplit(nums, "abcdefghi");
testMmSplit(nums, "");
}
}
【 在 century 的大作中提到: 】
: 想按每个正则分割字符串 但是同时需要把该正则匹配出来的字符串也保留
: 比如 "aaa333aaa" 我想按\d+的方式分字符串 结果是"aaa" ""333" "aaa" 请问如何操作呢
: 还有为什么 String sLine = "200%r";
: ...................
谢谢
【 在 wks 的大作中提到: 】
: 以前也想过这个问题。不过没找到现有的工具。
: 我试了试这样:
: [code=java]
: ...................