int start = 0; StringBuilder sb = new StringBuilder(""); while (matcher.find(start)){ String tmp = matcher.group(1); int index = srcString.indexOf(tmp,start); int nextStart = index + tmp.length(); sb.append(srcString.substring(start, index)); int n = Integer.parseInt(Character.toString(tmp.charAt(0))); for (int i = 0; i <= n; i ++){ sb.append(tmp.charAt(1)); }
public static String parse(String in){
if(in==null || in.trim().length()==0)
return "";
StringBuffer out = new StringBuffer();
for(int i=0 ; i<in.length()-1 ; i++){
char c1 = in.charAt(i);
int type1 = Character.getType(c1);
char c2 = in.charAt(i+1);
int type2 = Character.getType(c2);
if(type1!=9){//不是数字
out.append(c1);
continue;
}
if(type2==9){//是数字
out.append(c1);
continue;
}
int valueOfC1 = Integer.parseInt(new Character(c1).toString());
for(int j=0 ; j<valueOfC1 ; j++){
out.append(c2);
}
}
out.append(in.charAt(in.length()-1));
return out.toString();
}
public static void main(String[] args){
String str = "";
// str = "q3t2abc";
str = "12ra";
System.out.println(TestStr.parse(str));
}
}
if (srcString == null || srcString.trim().length() == 0){
return "";
}
Pattern pattern = Pattern.compile("(\\d[a-zA-Z])");
Matcher matcher = pattern.matcher(srcString);
int start = 0;
StringBuilder sb = new StringBuilder("");
while (matcher.find(start)){
String tmp = matcher.group(1);
int index = srcString.indexOf(tmp,start);
int nextStart = index + tmp.length();
sb.append(srcString.substring(start, index));
int n = Integer.parseInt(Character.toString(tmp.charAt(0)));
for (int i = 0; i <= n; i ++){
sb.append(tmp.charAt(1));
}
start = nextStart;
}
sb.append(srcString.substring(start));
System.out.println(sb.toString());
return sb.toString();
}
import java.util.regex.Pattern;public class TestStrRegex {
public static String parse(String in){
StringBuffer out = new StringBuffer();
Pattern pattern = Pattern.compile(
"(.*?)([0-9])([a-zA-Z])(.*?)",Pattern.DOTALL);
Matcher matcher = pattern.matcher(in);
int tailIndex = 0;
while(matcher.find()){
out.append(matcher.group(1));
int intValue = Integer.parseInt(matcher.group(2));
for(int i=0 ; i<=intValue ; i++){
out.append(matcher.group(3));
}
tailIndex = matcher.start(4);
}
out.append(in.substring(tailIndex));
return out.toString();
}
public static void main(String[] args){
String in = "q3t2abc";
System.out.println(TestStrRegex.parse(in));
}
}
Matcher m = Pattern.compile("([0-9])([a-z])").matcher(r);
while(m.find()){
int cnt = new Integer(m.group(1)).intValue();
String rep = m.group(2);
String str =new String(new char[cnt+1]).replaceAll(new String(new char[1]), rep);
r=r.replaceFirst(m.group(0),str);
}
System.out.println(r);
String tempStr = "";
String tempChar = "";
if (Character.isLetter(str.charAt(str.length() - 1)))
tempChar = "" + str.charAt(str.length() - 1);
tempStr = ""+str.charAt(str.length() - 1);
for (int i = str.length() - 2; i >= 0; i--) {
char c = str.charAt(i);
if (Character.isLetter(c)) {
tempChar = "" + c;
tempStr = c + tempStr;
} else {
int n = (int) c - 48;
for (int j = 0; j < n; j++) {
tempStr = tempChar + tempStr;
}
}
}
System.out.println(tempStr);