如何确定字符串中的char是字母还是数字?
也就是说,我有一个字符串“ abc2e4”,我需要找到一个整数,将它们平方,然后将答案放回字符串中(不对字母进行任何额外的操作),因此新字符串将为“ abc4e16”。
我在这次练习中非常迷失,所以任何帮助都是很棒的:D
答案 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) ;
}