Java:格式化问题。从字符串数组中抓取唯一字符并返回它们

时间:2018-01-17 01:45:36

标签: java

我在从字符串数组中获取唯一字母和数字时遇到问题,然后返回它们。我有格式化问题。

给定的输入是:([abc, 123, efg])并且应该返回abcefg123

但是,我的回复:abc123efg

我如何解决此问题,因为arrays.sort()最终会将数字放在首位而不是最后?

到目前为止,这是我的方法:

public static String getUniqueCharsAndDigits(String[] arr) {

    String str = String.join(",", arr);
    String myString = "";
    myString = str.replaceAll("[^a-zA-Z0-9]", "");
    for(int i = 0; i < str.length(); i++) {
        if(Character.isLetterOrDigit((i))){
            if(myString.indexOf(str.charAt(i)) == -1) {
                myString = myString + str.charAt(i);
            }
        }
    }
    return myString;
}

1 个答案:

答案 0 :(得分:0)

你要做的是创建两个字符串,一个带字母,一个带数字。

public static String getUniqueCharsAndDigits(String[] arr) {
    String str = String.join("", arr);
    String myLetters, myDigits;
    myLetters = myDigits = "";
    for(int i = 0; i < str.length(); i++) {
        char c = str.charAt(i);
        if(Character.isLetter(c)){
            if(myLetters.indexOf(c) == -1) {
                myLetters += c;
            }
        } else if(Character.isDigit(c)){
            if(myDigits.indexOf(c) == -1) {
                myDigits += c;
            }
        }
    }
    //if they need to be sorted, sort each one individually here
    return myLetters + myDigits;
}

我修改了您的代码并删除了不必要的部分。