-2

假设我有这个字符串:“abcd123fx”。现在,我想创建一个方法来检查(按顺序)“a”、“b”、“c”、“d”等是否是数字,如果不是,则返回 false。我不知道如何按顺序处理 char 的第 n 个位置以及每个 char 的位置。

4

10 回答 10

6

您可以使用 Character 类检查字符是否为数字字母。

String text = ...
char ch = texct.charAt(nth);
if (Character.isLetter(ch)) {
    // is a letter
} else if (Character.isDigit(ch)) {
    // is a digit
}

注意:这些方法支持 unicode 不同块中的字符。例如,它将接受阿拉伯语或韩语字符。

于 2013-01-08T10:00:20.543 回答
3

检查文档。您可以使用charAt函数。

于 2013-01-08T09:59:43.383 回答
2

要获取字符串的第 n 个字符,您应该使用charAt,您应该使用 Charachter 的isLetterOrDigit

通常,当您遇到这些问题时,您应该搜索 javadoc 以寻找合适的方法。

于 2013-01-08T10:02:26.127 回答
2

查看oracle.com 上的Java 教程以获取更多信息。

专门针对这个主题:

于 2013-01-08T10:04:20.543 回答
2

-正如你所说你是一个新手,我不会让这个复杂使用Regex,但会使用内置的 Java 功能来回答这个问题

-先用subString()method获取String的“abcd”部分,再用toCharArray()method分解Stringchar元素,再用Characterclass的isDigit()方法判断是不是数字。

例如:

public class T1 {

    public static void main(String[] args){


        String s = "abcd123fx";

        String str = s.substring(0,4);
        System.out.println(str);

        char[] cArr = str.toCharArray();

        for(char a :cArr){

            if(Character.isDigit(a)){

                System.out.println(a+" is a digit");
            }else{

                System.out.println(a+" is not a digit");
            }
        }
      }
}
于 2013-01-08T10:05:22.363 回答
2
if (Character.isLetter(yourString.charAt(index)))
    // ... Letter

if (Character.isDigit(yourString.charAt(index)))
   // ... Number

检查此页面

于 2013-01-08T10:00:33.643 回答
2

那么有几种方法可以做到这一点。最简单的可能是这样的:

Character.isDigit(someString.charAt(x))
or  a regex way would be someString.substring(x,x).matches("[0-9]")
于 2013-01-08T10:02:11.190 回答
1
public static void main(String[] args){
    System.out.println(checkNumber("123a44"));
}

public static boolean checkNumber(String s){
    for(int i = 0; i < s.length(); i++){
        if(Character.isDigit(s.charAt(i))){
            continue;
        }
        else{
            return false;
        }
    }
    return true;
}
于 2013-01-08T10:08:54.297 回答
1

这可能会帮助你

public static boolean isNumeric(String str) {
    return str.matches("-?\\d+(.\\d+)?");
}

public static void main(String[] args){
    System.out.println(isNumeric("abcd123fx"));
}

如果您有一个数字字符串,它将返回 true 否则为 false

于 2013-01-08T10:03:05.953 回答
1

您还可以查看 ASCII 表

根据这一点,您可以编写一个方法:

private boolean isNumber(char a) {
    int i = a;
    if(i >= 48 && i <=57)
        return true;
    else 
        return false;
}

// now you can look by a String

private void checkString() {
    String x = "abcd123fx ";

    for(char counter : x.toCharArray())
        System.out.println(isNumber(counter));
}
于 2013-01-08T10:00:10.600 回答