如何解决如果字符串内部有数字,则将数字平方并作为字符串返回我如何用平方数替换旧数字 Java
所以它应该像那样工作
squareDigits("a22b") on "a44b"
squareDigits("a9b2") on "a81b4"
到目前为止我得到了什么:
public class Code {
public static void main(String[] args) {
String ok = "a2b9";
System.out.println(squareDigits(ok)); // "a81b4"
}
public static String squareDigits(String s) {
char[] pena = s.tochararray();
int aboba;
for (char c : pena) {
if (Character.isDigit(c)) {
String s1 = Character.toString(c);
int b = Integer.parseInt(s1);
aboba = b * b;
System.out.println(aboba);
}
}
return "";
}
}
我只是初学者,这对我很有帮助
解决方法
您可以使用 StringBuffer
并遍历 char 数组并检查 char 是否为数字,然后将其平方并放入字符串缓冲区,如果不是,则将其按原样放入字符串缓冲区。
public static void main(String[] args) {
System.out.println(squareDigits("a22b"));
System.out.println(squareDigits("a9b2"));
}
public static String squareDigits(String s) {
char[] pena = s.toCharArray();
StringBuffer sb = new StringBuffer();
for (char c : pena) {
if (Character.isDigit(c)) {
String s1 = Character.toString(c);
int b = Integer.parseInt(s1);
sb.append(b * b);
} else {
sb.append(c);
}
}
return sb.toString();
}
,
您可以像这样使用 StringBuilder
轻松完成:
public static void main(String[] args) {
System.out.println(squareDigits("a22b")); // "a44b"
System.out.println(squareDigits("a2b9")); // "a4b81"
System.out.println(squareDigits("a55b")); // "a2525b"
}
public static String squareDigits(String s) {
StringBuilder result = new StringBuilder();
s.chars().forEach(c -> result.append(addDigitSquaredIfDigit(c)));
return result.toString();
}
private static String addDigitSquaredIfDigit(int charAsDigit) {
char c = (char) charAsDigit;
return Character.isDigit(c) ? getSquaredDigitString(c) : String.valueOf(c);
}
private static String getSquaredDigitString(char c) {
int digit = Integer.parseInt(Character.toString(c));
return Integer.toString(digit * digit);
}
,
也试试。
public static void main(String[] args) {
String ok = "a2b9";
System.out.println(squareDigits(ok)); // "a81b4"
}
public static String squareDigits(String s) {
StringBuilder sb = new StringBuilder();
String[] chars = s.split("");
for (String str : chars){
if (isNumber(str)){
int num = Integer.valueOf(str);
Double square = Math.pow(num,2);
sb.append(square.intValue());
} else {
sb.append(str);
}
}
return sb.toString();
}
private static boolean isNumber(String str) {
try {
Integer.valueOf(str);
return true;
} catch (Exception e) {
return false;
}
}
,
纯函数方式(可能不是最佳方式):
public static String squareDigits(String s) {
char[] pena = s.toCharArray();
return IntStream.range(0,pena.length).mapToObj(i -> pena[i]).map(it -> {
String c = it.toString();
try {
int intVal = Integer.parseInt(c);
return "" + (intVal * intVal);
} catch (Exception e) {
return c;
}
}).reduce("",String::concat);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。