如何找出字符串中的哪个char是数字?

时间:2019-02-07 18:36:22

标签: java

如何确定字符串中的char是字母还是数字?

也就是说,我有一个字符串“ abc2e4”,我需要找到一个整数,将它们平方,然后将答案放回字符串中(不对字母进行任何额外的操作),因此新字符串将为“ abc4e16”。

我在这次练习中非常迷失,所以任何帮助都是很棒的:D

3 个答案:

答案 0 :(得分:0)

Java提供了一种检查字符是否为数字的方法。为此,您可以使用Character.isDigit(char)

public static String squareNumbers(String input) {
    StringBuilder output = new StringBuilder();
    for (int i = 0; i < input.length(); i++) {
        char c = input.charAt(i); // get char at index
        if (Character.isDigit(c))  // check if the char is a digit between 0-9
            output.append((int) Math.pow(Character.digit(c, 10), 2)); // square the numerical value
        else
            output.append(c); // keep if not a digit
    }
    return output.toString();
}

这将逐个字符迭代任何传递的字符串,并将找到的每个数字平方。例如,如果2位数字紧挨着,则它们将被视为单独的数字并各自平方,而不是一个包含多个数字的数字。

squareNumbers("10")-> "10"

squareNumbers("12")-> "14"

squareNumbers("abc2e4")-> "abc4e16"

答案 1 :(得分:0)

您可以使用正则表达式

public static String update(String str) {
    final Pattern pattern = Pattern.compile("\\D+|\\d+");
    final Matcher matcher = pattern.matcher(str);
    StringBuilder buf = new StringBuilder();
    int pos = 0;

    while (matcher.find(pos)) {
        str = matcher.group();
        buf.append(Character.isDigit(str.charAt(0)) ? (int)Math.pow(Integer.parseInt(str), 2) : str);
        pos = matcher.end();
    }

    return buf.toString();
}

答案 2 :(得分:-1)

我的逻辑只对一位数字平方。

例如-如果您提供输入he13llo,则输出将为he19llo,而不是he169llo。

 Scanner in = new Scanner(System.in) ; 
    String str = in.next() ; 
    String ans = str ; 

    for (int i = 0 ; i < str.length() ; i++)
    {
        char ch = str.charAt(i) ; 
        if((ch - '0' >= 0) && (ch - '9' <= 0))
        {
            int index = i ; 
            int num = ch - '0' ; 
            int square = num * num ; 
            ans = ans.substring(0 ,index) + square  + ans.substring(index+1) ; 
        }
    }
    System.out.println(ans) ; 
 }