【问题标题】:how can I change numbers in string?如何更改字符串中的数字?
【发布时间】:2021-02-16 09:16:50
【问题描述】:

我需要用给定字符串 s

中 9 的补码替换每个数字

示例:我有 $235! -> 我有 $(9-2)(9-3)(9-5)! -> 我有 764 美元!

public static void playPass(String s, int shift) {
        s.chars().map(i -> Character.isDigit(i) ? ____________?___________ : i)
                .mapToObj(i -> (char) i).forEach(System.out::println);
}

是的,当然,我可以通过使用 for 循环来解决它,但我只是想了解更多关于 Streams 的信息。

所以我试过了:

  1. .map(i -> Character.isDigit(i) ? 9-i : i) 输出:“我有 $ᅲᅱᅯ!”。这是因为char和整数表示的区别。

  2. .map(i -> Character.isDigit(i) ? Character.getNumericValue(9-i) : i) 输出:“我有 $???!”。但是在这里我知道 i - 不是一个真正的值,它只是 ASCII 码。

  3. .map(i -> Character.isDigit(i) ? Character.getNumericValue(9-Integer.parseInt(String.valueOf(i))) : i) 输出:“我有 $???!”

我猜第三次尝试更聪明,但它不起作用(

我需要一些像这样工作的方法(convertDigitCharToInt)(更改字符)

i - char

i = Character.getNumericValue(9-convertDigitCharToInt(i));

这不是家庭作业))我只是在 codewars.com 练习。于是就有了这样的问题。 [链接]:https://codewars.com/kata/559536379512a64472000053/train/java)

【问题讨论】:

  • 如果你被告知答案是9-i,我想知道你是否知道如何完成这个。
  • 这不是家庭作业))我只是在 codewars.com 练习。所以出现了这样的问题。(链接:codewars.com/kata/559536379512a64472000053/train/java
  • @AbandonedCrypt 不行,我已经试过了
  • “家庭作业”和练习编码本质上是一回事……当它们是 StackOverflow 问题的主题时。您需要向我们展示您所做的事情并提出更具体的问题……而不是仅仅要求我们为您提供解决方案。

标签: java lambda char java-stream


【解决方案1】:

你几乎做到了。补码计算为字符'9' 与当前字符数字之间的差 移位'0' 以获得新字符。

以下代码可以正常工作:

public static void playPass(String s) {
        s.chars()
            .map(i -> Character.isDigit(i) ? '9' - i + '0' : i)
            .mapToObj(i -> (char) i)
            .forEach(System.out::print);
}   

测试:

playPass("I have $235");   // I have $764

【讨论】:

    猜你喜欢
    • 2014-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多