【发布时间】:2013-07-21 00:24:15
【问题描述】:
我有一个字符串,例如 9.555.555,00,我想删除所有符号并只保留数字,这是字符串格式。
我使用 indexof 来查找特殊字符,然后使用循环来在循环到达特定字符时跳过特定字符,这样它就不会将该字符附加到最终字符串中。
但是,在执行此操作时,代码似乎选择了第一次出现的句点符号,但 indexOf() 第二次返回 -1,即使还有另一个 .在字符串中。
int dotIndex, commaIndex;
dotIndex = tempBalance.indexOf('.');
commaIndex = tempBalance.indexOf(',');
for(int j = 0; j < tempBalance.length(); ++j){
//System.out.println("Iteration: " + j + " ~ i @ : " + i);
if(j == dotIndex){
System.out.println("Current dot Index: " + dotIndex + " J: " + j + " : " + tempBalance);
dotIndex = tempBalance.indexOf(j+1, '.');
System.out.println("New dotIndex: " + dotIndex);
continue;
} else if(j == commaIndex){
break;
} else {
tempString.append(tempBalance.charAt(j));
//System.out.print("Found normal Number: " + tempBalance.substring(j, (j+1)));
}
system.out.println 的输出:
当前点索引:1 J:1:9.955.458,23
新点索引:-1
【问题讨论】:
-
@radimpe 看来
replace应该是replaceAll -
@AndrewThompson。不,
replace()可以正常工作。它还替换了所有出现的事件。replaceAll()相反用于替换正则表达式模式。 -
@RohitJain 感谢您的更正。看来我错了。 :P
-
indexOf()返回第一次出现的索引 -
tempBalance.replace(".","").replace(",","")可以。但是 replaceAll(例如tempBalance.replaceAll(".","").replaceAll(",",""))不起作用并返回空白响应。当char可以这样做时,我可能会因为将它们设置为String而感到“错误”。