【问题标题】:How do I reverse the numbers in a string?如何反转字符串中的数字?
【发布时间】:2012-09-28 02:31:27
【问题描述】:

例如,如果我有一个包含 5、4、3、2、1 的字符串,我该如何创建一个新字符串或如何打印出 1、2、3、4、5?谢谢。

【问题讨论】:

  • 从源的一端读取并写入目标的另一端。
  • Java API 中没有内置函数;您将需要创建自己的方法,在这种情况下,最好将您的问题包含在您尝试过的任何内容中。
  • 点击右侧相关链接之一,即可看到解决方案。
  • 如果您正在学习 java,请不要使用内置功能,否则您将无法享受编码。

标签: java string reverse


【解决方案1】:

做这样的事情:

StringBuilder builder = new StringBuilder("3, 2, 1");

 System.out.println(builder.reverse());

【讨论】:

    【解决方案2】:

    将字符串转换为字符数组。从字符数组的长度 -1 循环到 0 索引一次打印每个字符。

    【讨论】:

      【解决方案3】:

      请参阅this 有关将逗号分隔的字符串解析为数组的问题。反转数组,然后看到关于将数组转回逗号分隔字符串的相同问题。

      您也可以使用this c# 代码作为示例,应该很容易移植。

      【讨论】:

        【解决方案4】:

        如果您只对反转String 感兴趣,而不关心自然顺序,您可以执行类似的操作

        String word = "1, 2, 3, 4, 5";
        word = word.replace(", ", "");
        
        StringBuilder s = new StringBuilder();
        for (int i = 0; i <= word.length() - 1; i++) {
            char c = word.charAt(word.length() - i - 1);
            if (s.length() > 0) {
                s.append(", ");
            }
            s.append(c);
        }
        

        哪个输出5, 4, 3, 2, 1

        当然,如果你对保持数字的自然顺序感兴趣,它会变得有点复杂......

        //String value = "1, 2, 3, 4, 5";
        String value = "1, 5, 4, 3, 2";
        System.out.println("Start with " + value);
        String parts[] = value.split(", ");
        
        // We need to convert the String values to ints
        List<Integer> listOfValues = new ArrayList<Integer>(5);
        for (String part : parts) {
            listOfValues.add(Integer.parseInt(part));
        }
        // Allow the API to sort them...
        Collections.sort(listOfValues);
        
        StringBuilder sb = new StringBuilder(value.length());
        for (Integer part : listOfValues) {
            if (sb.length() > 0) {
                sb.append(", ");
            }
            sb.append(part);
        }
        
        System.out.println(sb);
        
        
        System.out.println(s.toString());
        

        哪些输出

        Start with 1, 5, 4, 3, 2
        1, 2, 3, 4, 5
        

        【讨论】:

          【解决方案5】:

          你可以这样做:

          String values = "5, 4, 3, 2, 1";
          values = values.replace(", ", " ,");
          StringBuilder sb = new StringBuilder(values);
          values = sb.reverse().toString();
          System.out.println(values);
          

          输出是:

          1, 2, 3, 4, 5
          

          【讨论】:

            【解决方案6】:

            如果可以使用内置方法,这是最短的解决方案:

            String input = "12345";
            String output = new StringBuilder(input).reverse().toString();
            

            如果您需要实现自己的解决方案,这是使用char[] 并仅遍历输入字符串的一半的有效答案:

            String input = "12345";
            char[] chars = input.toCharArray();
            for (int i = 0, n = chars.length; i < n/2; i++) {
                char tmp = chars[i];
                chars[i] = chars[n-i-1];
                chars[n-i-1] = tmp;
            }
            String output = new String(chars);
            

            无论哪种方式,输入都会反转:

            System.out.println(output);
            > 54321
            

            【讨论】:

              猜你喜欢
              • 2020-09-04
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2020-12-29
              • 2016-01-06
              • 1970-01-01
              相关资源
              最近更新 更多