Java如何重新排列字符串中的数字

Java如何重新排列字符串中的数字,java,string,Java,String,有没有一种简单明了的方法来修改str1以获得str2?如果我正确理解了您的问题,那么我认为您希望按升序重新排列 String str1 = "11,22,13,31,21,12"; String str2 = "11,12,13,21,22,31"; 输出:11 12 13 21 22 31如果我正确理解了你的问题,那么我认为你想按升序重新排列 String str1 = "11,22,13,31,21,12"; String str2 = "11,12,13,21,22,31"; 输出:1

有没有一种简单明了的方法来修改str1以获得str2?

如果我正确理解了您的问题,那么我认为您希望按升序重新排列

String str1 = "11,22,13,31,21,12";
String str2 = "11,12,13,21,22,31";

输出:11 12 13 21 22 31

如果我正确理解了你的问题,那么我认为你想按升序重新排列

String str1 = "11,22,13,31,21,12";
String str2 = "11,12,13,21,22,31";

输出:11 12 13 21 22 31

检查以下代码和注释:

public class test {
    public static void main(String[] args) {
        String str = "11,22,13,31,21,12";String str1[]=str.split(",");

        Arrays.sort(str1);
        for(String s:str1)
        {
            System.out.print(s+" ");
        }
    }
导入java.util.array;
公共类排序字符串{
公共静态void main(字符串[]args){
字符串str=“11,22,13,31,21,12”;
StringBuffer strB=新的StringBuffer();
String[]arr=str.split(,“”;//拆分字符串保存在数组中
Arrays.sort(arr);//排序数组
对于(int i=0;i
检查以下代码和注释:

public class test {
    public static void main(String[] args) {
        String str = "11,22,13,31,21,12";String str1[]=str.split(",");

        Arrays.sort(str1);
        for(String s:str1)
        {
            System.out.print(s+" ");
        }
    }
导入java.util.array;
公共类排序字符串{
公共静态void main(字符串[]args){
字符串str=“11,22,13,31,21,12”;
StringBuffer strB=新的StringBuffer();
String[]arr=str.split(,“”;//拆分字符串保存在数组中
Arrays.sort(arr);//排序数组
对于(int i=0;i
具有以下功能的Java 8解决方案:

注意:对于
连接
方法,我有一个

解释为一个数字(
Integer::parseInt
)很重要,因为这将正确地对输入进行排序。

Java 8解决方案具有:

注意:对于
连接
方法,我有一个


解释为数字(
Integer::parseInt
)很重要,因为这将正确地对输入进行排序。

试试这个简单的代码片段,它正好给出了您的要求:-

String str2 = Stream
    .of(str.split(","))
    .map(Integer::parseInt)
    .sorted()
    .map(String::valueOf)
    .collect(joining(","));
String[]拆分数据;
字符串str1=“11,22,13,31,21,12”;
System.out.println(“str1:+str1”);
字符串str2=“11,12,13,21,22,31”;
splitData=str1.split(“,”);
数组。排序(拆分数据);
系统输出打印(“str2:”);

对于(int i=0;i请尝试这个简单的片段,给出您所要求的内容:-

String str2 = Stream
    .of(str.split(","))
    .map(Integer::parseInt)
    .sorted()
    .map(String::valueOf)
    .collect(joining(","));
String[]拆分数据;
字符串str1=“11,22,13,31,21,12”;
System.out.println(“str1:+str1”);
字符串str2=“11,12,13,21,22,31”;
splitData=str1.split(“,”);
数组。排序(拆分数据);
系统输出打印(“str2:”);


for(int i=0;IString是不可变的,因此您不能修改str1。您只能为它分配一个新字符串。拆分、排序、合并?简单清洁方式?
str1=str2
HAHA@PeterRader不,对不起,这不是我的本意,str2是结果。将str2分配给str1是毫无意义的,对不起,误解……谁投票关闭了“太宽了"?虽然这不是一个非常有用的问题,也没有显示出一些努力,但这个问题简短明了。但它不值得投票表决。字符串是不可变的,因此您不能修改str1。您只能为它分配一个新字符串。拆分、排序、合并?简单明了?
str1=str2
HAHA@PeterRader不,对不起,这不是我的本意,str2是e结果。将str2分配给str1是毫无意义的,很抱歉误解…谁投票关闭了,因为“范围太广”?虽然这不是一个非常有用的问题,也没有表现出一定的努力,但这个问题简短而明确。但它不值得投票。我投票是因为它正确地处理了
9
之类的数字。@PeterRader是的,这通常很重要,所以我添加了一条注释来明确说明。好吧,主要的区别是:其他值。显然这个问题缺少一些关于这些值的性质的信息。但我认为通过查看字符串,我们可以安全地推断字符串只包含数字(直到证明错误为止)@Jerry06我已经添加了类
java.util.stream.Collectors
作为收藏夹:窗口->首选项->java->编辑器->内容辅助->收藏夹。这样做,你也可以得到它的方法作为建议。我投了赞成票,因为它正确地处理了
9
之类的数字。@PeterRader是的,这通常很重要,所以我添加了一条注释to使其明确。好吧,主要区别是:其他值。显然,问题缺少关于这些值的性质的一些信息。但我认为,通过查看字符串,我们可以安全地推断字符串只包含数字(直到证明错误)@Jerry06我已经添加了类
java.util.stream.Collectors
作为收藏夹:窗口->首选项->java->编辑器->内容辅助->收藏夹。通过这样做,您也可以得到它的方法作为建议。嗯……虽然工作正常,但这并不完全是OP所要求的。1)他希望将输出包含在一个新变量中。2)分隔符仍然应该是逗号(按您的方式操作时会出现新问题)。也许你可以针对Java-8之前的解决方案优化你的答案?@Seelenvirtuose故意没有完成答案,因为OP不会学到任何东西。我的工作是用逗号(,)替换空格并存储在单独的变量中。50%我已经完成,50%留给奥菲姆。。。虽然有效,但并不完全符合OP的要求。1) 他想把输出放在一个新的变量中。2) 分隔符仍然应该是逗号(按您的方式操作时会出现新问题)。也许你可以针对Java-8之前的解决方案优化你的答案?@Seelenvirtuose故意没有完成答案,因为OP不会学到任何东西。我的工作是用逗号(,)替换空格并存储在单独的变量中。50%我已完成,50%留给OP