我想用特定值替换字符串中的所有数字。
Teststring:-SD12431;ABC333
如何识别数字块,尤其是用(动态)新值替换它们?
例如更换后:
-SDfirst;ABCsecond
?
答案 0 :(得分:5)
replaceFirst()
方法可以让你在循环中使用它。
String myNewString = myString.replaceFirst("\\d+","first");
如果循环遍历此语句,则replaceFirst()
的每次调用都会将第一组数字替换为您提供的任何数字作为第二个参数。
答案 1 :(得分:2)
你可以这样做
StringBuffer sb = new StringBuffer();
Matcher m = Pattern.compile("\\d+").matcher(str);
int n = 0;
while(m.find()) {
if (++n == 1) {
m.appendReplacement(sb, "first");
} else {
m.appendReplacement(sb, "second");
}
}
m.appendTail(sb);
s = sb.toString();
答案 2 :(得分:1)
您可以这样做:
yourString = yourString.replaceFirst("\\d+",firstString).replaceFirst("\\d+",secondString); //and so on
或使用循环,如果它更符合您的需求
答案 3 :(得分:-1)
您可以使用字符串类的replaceFirst(String regex,String replacement)函数。
看看 http://javarevisited.blogspot.fr/2011/12/java-string-replace-example-tutorial.html
因此,在第一个参数中,您必须使用正则表达式来查找数字,例如:
" [0-9] +"会找到一个或多个数字
String testString = "-SD12431;ABC333";
ArrayList<String> remplaceBy= new ArrayList<String>();
remplaceBy.add("first");
remplaceBy.add("second");
remplaceBy.add("third");
String newString = testString;
String oldString ="";
int i =0;
while(!newString.equals(oldString))
{
oldString = new String(newString);
newString = newString.replaceFirst("[0-9]+",remplaceBy.get(i));
i++;
System.out.println("N1:"+newString);
System.out.println("O1:"+oldString);
}
System.out.println("New String"+newString);