String strArray="135(i),15a,14(g)(q)12,67dd(),kk,159"; //splited by ','
在第一次出现字母数字值/字符后划分字符串
预期产出:
original expected o/p
15a s1=15 s2=a
67dd() s1=67 s2=dd()
kk s1="" s2=kk
159 s1=159 s2=""
请帮助我................
答案 0 :(得分:1)
您可以使用Pattern / Matcher的组方法:
String strArray = "135(i),15a,14(g)(q)12,67dd(),kk,159";//splited by ','
Pattern pattern = Pattern.compile("(?<digits>\\d*)(?<chars>[^,]*)");
Matcher matcher = pattern.matcher(strArray);
while (matcher.find()) {
if (!matcher.group().isEmpty()) //omit empty groups
System.out.println(matcher.group() + " : " + matcher.group("digits") + " - " + matcher.group("chars"));
}
方法组(String name)为您提供在模式括号中找到的字符串,其中包含匹配项中的特定名称(此处为'digits'或'chars')。 方法组(int i)将为您提供在匹配中模式的第i个括号中找到的String。
有关在Java中使用正则表达式的更多示例,请参阅http://docs.oracle.com/javase/tutorial/essential/regex/上的Oracle教程。
答案 1 :(得分:0)
您可以使用Pattern
和Matcher
来查找以数字开头并在该位置拆分的字母的第一个索引。
<强>代码强>
public static void main(String[] args) throws ParseException {
String[] inputs = { "15a", "67dd()", "kk", "159" };
for (String input : inputs) {
Pattern p = Pattern.compile("(?<=[0-9])[a-zA-Z]");
Matcher m = p.matcher(input);
System.out.println("Input: " + input);
if (m.find()) {
int splitIndex = m.end();
// System.out.println(splitIndex);
System.out.println("1.\t"+input.substring(0, splitIndex - 1));
System.out.println("2.\t"+input.substring(splitIndex - 1));
} else {
System.out.println("1.");
System.out.println("2.\t"+input);
}
}
}
<强>输出强>
Input: 15a
1. 15
2. a
Input: 67dd()
1. 67
2. dd()
Input: kk
1.
2. kk
Input: 159
1.
2. 159
答案 2 :(得分:0)
使用java.util.regex.Pattern
和java.util.regex.Matcher
String strArray="135(i),15a,14(g)(q)12,67dd(),kk,159";
String arr[] = strArray.split(",");
for (String s : arr) {
Matcher m = Pattern.compile("([0-9]*)([^0-9]*)").matcher(s);
System.out.println("String in = " + s);
if(m.matches()){
System.out.println(" s1: " + m.group(1));
System.out.println(" s2: " + m.group(2));
} else {
System.out.println(" unmatched");
}
}
<强>输出:强>
String in = 135(i) s1: 135 s2: (i) String in = 15a s1: 15 s2: a String in = 14(g)(q)12 unmatched String in = 67dd() s1: 67 s2: dd() String in = kk s1: s2: kk String in = 159 s1: 159 s2:
请注意'14(g)(q)12'
未匹配的方式。目前还不清楚OP在这种情况下所需的输出是什么(或者如果示例输入字符串的这一部分缺少逗号)。