字符串中的Java字符替换
我在替换字符串中的字符时遇到了一些问题。该代码在删除连字符和句点时效果非常好,但是对于字母“e”,它删除了“test”中的“e”,并转换字符串末尾的三个“e”。有人知道为什么会这样吗字符串中的Java字符替换,java,Java,我在替换字符串中的字符时遇到了一些问题。该代码在删除连字符和句点时效果非常好,但是对于字母“e”,它删除了“test”中的“e”,并转换字符串末尾的三个“e”。有人知道为什么会这样吗 String str = "This is a test string, 12345! -12e3.0 eee"; for(int i = 0; i < str.length(); i++) { if((str.charAt(i) == '-') &&
String str = "This is a test string, 12345! -12e3.0 eee";
for(int i = 0; i < str.length(); i++) {
if((str.charAt(i) == '-') && (Character.isDigit(str.charAt(i+1)))) {
str = str.replace(str.charAt(i), '*');
}
if((str.charAt(i) == 'e') && (Character.isDigit(str.charAt(i+1)))) {
str = str.replace(str.charAt(i), '*');
}
if((str.charAt(i) == '.') && (Character.isDigit(str.charAt(i+1)))) {
str = str.replace(str.charAt(i), '*');
}
}
str = str.replaceAll("[1234567890]", "*");
System.out.println(str);
String str=“这是一个测试字符串,12345!-12e3.0 eee”;
对于(int i=0;i
在每种情况下,if
部分仅查找是否应替换字符。。。但是替代品本身:
str = str.replace(str.charAt(i), '*')
。。。对整个字符串执行替换
对此最简单的修复方法可能是将其转换为一个字符数组,一次替换一个字符,然后为其余字符创建一个字符串:
char[] chars = str.toCharArray();
for (int i = 0; i < chars.length - 1; i++) {
if (chars[i] == '-' && Character.isDigit(chars[i + 1])) {
chars[i] = '*';
}
// Similarly for the other two
}
String newString = new String(chars);
char[]chars=str.toCharArray();
for(int i=0;i
或者,为了避免重复,将中间部分替换为:
for (int i = 0; i < chars.length - 1; i++) {
if (Character.isDigit(chars[i + 1]) &&
(chars[i] == '-' || chars[i] == 'e' || chars[i] == '.')) {
chars[i] = '*';
}
}
for(int i=0;i
str.replace(str.charAt(i),“*”)代码>将替换所有字符
可以使用StringBuilder替换字符串中的特定字符。请复习这个问题和答案
也许您应该在for循环的末尾写出str
的内容。然后你可以看到什么时候会发生。这听起来正是你应该期望的:它用“*”s替换所有的“e”。如果我是最后一个字符,并且你试图计算str.charAt(i+1),你可能会有问题。你希望你的程序得到修复,还是可以显示一个更简单的解决方案?逻辑and必须都是真的,答案才是真的。