Character.isLetter() 方法用于判断指定字符是否为字母。如果字符为字母,则返回 true;否则返回 false。 toLowerCase() 方法用于将大写字符转换为小写。返回转换后字符的小写形式,如果有的话;否则返回字符本身。 使用如下方法进行排序:其中使用了java8的拉姆达表达式。
characters.sort(Comparator.comparingInt(Character::toLowerCase));
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;
/**
* @Description 字符串排序
* @Author haixiaofei
* @Date 2022/2/15 9:20
**/
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
while (input.hasNextLine()){
String str = input.nextLine();
str = sort(str);
System.out.println(str);
}
}
public static String sort(String str) {
List<Character> characters = new ArrayList<>();
for (char ch : str.toCharArray()){
if (Character.isLetter(ch)) {
characters.add(ch);
}
}
//将英文字母先排序好
characters.sort(Comparator.comparingInt(Character::toLowerCase));
//若是非英文字母则直接添加
StringBuilder result = new StringBuilder();
for (int i = 0, j = 0; i < str.length(); i++) {
if (Character.isLetter(str.charAt(i))) {
result.append(characters.get(j++));
}
else {
result.append(str.charAt(i));
}
}
return result.toString();
}
}