【发布时间】:2016-07-29 03:18:26
【问题描述】:
我正在尝试在 Java 中创建一个方法,该方法将识别一行文本中的非字母数字符号并将其删除。但是,我可以使用的工具有限。我必须使用循环和扫描仪来阅读文本,并且只能使用 charAt 和 substring 方法来删除有问题的字符。这是我想出的代码
public String sanitize2(){
Scanner sanitizer = new Scanner(input.getText());
String toBeSanitized = sanitizer.nextLine();
int length = toBeSanitized.length();
for (int i=0;i < toBeSanitized.length(); i++){
if ((toBeSanitized.charAt(i) >= 'a' && toBeSanitized.charAt(i) <= 'z') ||
(toBeSanitized.charAt(i) >= 'A' && toBeSanitized.charAt(i) <= 'Z') ||
(toBeSanitized.charAt(i) >= '0' && toBeSanitized.charAt(i) <= '9'))
{
toBeSanitized = toBeSanitized.substring(0,i) + toBeSanitized.substring(i+1);
}
}
input.setText(toBeSanitized);
return toBeSanitized;
}
但是,当我将文本插入输入字段时,它完全给出了错误的答案。谁能解释我在这里做错了什么?
【问题讨论】:
-
查看这篇文章。它是重复的。 stackoverflow.com/questions/1805518/…
-
@kimdung 不是您链接问题的副本。那个是关于正则表达式的,这个不是。这个是关于单字符 Unicode 数字的。
-
我也看过这个,但我认为这对我的情况没有帮助,因为我受限于我可以使用的方法
-
您正在删除字母数字范围内的字符
-
您的代码看起来只是试图删除字母数字字符,而不是保留它们。此外,使用
while循环而不是for,并且仅在找到有效字符时增加i。你目前总是递增长i所以你会跳过一些坏字符
标签: java loops for-loop substring