我必须为我的java类中的赋值执行此操作。我一直在寻找一段时间,但只能找到正则表达式等解决方案。
对于我的作业,我只能使用charAt(),length()和/或toCharArray()。我需要从像gu578si300这样的字符串中获取例如数字,这样它就会变成:578300。
我知道ASCII中的数字是48 - 57,但我无法弄清楚如何在java中执行此操作。你们有什么想法吗?
我正在考虑一个for循环来检查(int)char是否介于48-57之间,如果是,则将值放入一个单独的数组中。 Howeevr我不知道如何编程最后一件事。
我现在有了这个;
public static String filterGetallenreeks(String reeks){
String temp = "";
for (char c : reeks.toCharArray()) {
if ((int) c > 47 && (int) c < 58)
temp += c;
}
return temp;
然而它不起作用,它只是输出相同的内容。
这是我的主题中看起来像这样的东西。如果我是正确的回归温度;将临时字符串返回到主右边的reeks字符串中?为什么我的输入仍然是相同的输出?
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Voer een zin, woord of cijferreeks in:");
String reeks = sc.nextLine();
if (isGetallenreeks(reeks)){
System.out.println("is getallenreeks");
filterGetallenreeks(reeks);
System.out.println(reeks);
}
答案 0 :(得分:2)
由于这是作业,我不会提供完整的解决方案,但是,这就是你应该如何去做的:
执行一个for循环,迭代字符串中的字符总数(.length)。使用charAt和isDigit方法检查字符是否为数字。
答案 1 :(得分:1)
这似乎是一种合理的方法,但我会根据您的建议做出一些改变:
StringBuilder
而不是数组。'0'
和'9'
等字符文字代替ASCII代码,使代码更具可读性。<强>更新强>
您的代码的具体问题是这一行:
temp = temp + (int)c;
将字符转换为ASCII值,然后将其转换为包含ASCII值的十进制字符串。那不是你想要的。请改用:
temp += c;
答案 2 :(得分:1)
您可以执行一个循环来检查字符串中的字符,如果它是一个数字,则将其附加到另一个字符串:
//I haven't tested this, so you know.
String test = "gu578si300 ";
String numbers = "";
for(int i=0; i<test.length(); i++){
if("0123456789".indexOf(test.charAt(i)) // if the character at position i is a number,
numbers = numbers + test.charAt(i); // Add it to the end of "numbers".
}
int final = Integer.parseInt(numbers); // If you need to do something with those numbers,
// Parse it.
请告诉我这是否适合您。