Java 如何用特定值替换所有数字字符?
我想用特定值替换字符串中的所有数字 测试字符串:Java 如何用特定值替换所有数字字符?,java,io,Java,Io,我想用特定值替换字符串中的所有数字 测试字符串:-SD12431;ABC333 如何识别数字块,尤其是用(动态)新值替换它们 例如,更换后: -SDfirst;ABCsecond?如果在循环中使用该方法,则该方法将允许您执行此操作 String myNewString = myString.replaceFirst("\\d+","first"); 如果循环使用this语句,每次调用replaceFirst()都会将第一组数字替换为作为第二个参数提供的任何数字。您可以执行以下操作: yourS
-SD12431;ABC333
如何识别数字块,尤其是用(动态)新值替换它们
例如,更换后:
-SDfirst;ABCsecond
?如果在循环中使用该方法,则该方法将允许您执行此操作
String myNewString = myString.replaceFirst("\\d+","first");
如果循环使用this语句,每次调用
replaceFirst()
都会将第一组数字替换为作为第二个参数提供的任何数字。您可以执行以下操作:
yourString = yourString.replaceFirst("\\d+",firstString).replaceFirst("\\d+",secondString); //and so on
或者使用一个循环,如果它更适合您的需要您可以这样做
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();
您可以使用String类的replaceFirst(stringregex,stringreplacement)函数 看 因此,在第一个参数中,您必须使用正则表达式来查找数字,例如:
- “[0-9]”将查找单个数字
- “[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);
String testString=“-SD12431;ABC333”; ArrayList remplaceBy=新的ArrayList(); remplaceBy.添加(“第一”); remplaceBy.添加(“第二”); remplaceBy.添加(“第三”); 字符串newString=testString; 字符串oldString=“”; int i=0; 而(!newString.equals(oldString)) { oldString=新字符串(newString); newString=newString.replaceFirst(“[0-9]+”,remplaceBy.get(i)); i++; System.out.println(“N1:+newString”); System.out.println(“O1:+oldString”); } System.out.println(“新字符串”+新闻字符串);
\\d+
匹配,但如何基于此拆分字符串?您可以使用Pattern.split或Matcher在匹配的序列中进行迭代。您在这里到底想做什么?您的字符串是否总是看起来像-StringNumber;字符串编号
?这个映射应该如何工作?您是否在某个地方有一些预定义的first
second
值?您需要写入\\d而不是\d:)这两种方法都可以,或者StringBuffer
或者test=test.replaceFirst(标记“first”)代码>。你会认为某人优先于循环替换吗?1个原因是性能(如果重要的话);2-可能更灵活(如果需要);否则我会使用replaceFirst,因为这是一行解决方案。如果使用replaceAll()
,就不能像问题所问的那样,用不同的替换替换替换原始字符串的不同部分。您的示例使用了replaceFirst()