需要一些帮助,我需要从用户输入字中删除空格和标点符号。然后通过重新排列字母(没有特定的方式)对其进行排序。
我的问题是我可以删除标点符号和空格,或者我可以对字符进行排序,但我不能让它同时执行这两个操作。它只打印出十六进制。请帮忙。
公共课Assignment6_main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Enter a string: ");
String s = input.nextLine();
sort(s);
}
public static void sort(String myString) {
char[] chars = myString.toCharArray();
//排序字符
Arrays.sort(chars);
//删除标点符号和空格
String noPuncs = myString.replaceAll("\\W", "");
System.out.println(noPuncs + chars);
} }
答案 0 :(得分:0)
您需要手动将字符数组转换回字符串:
System.out.println(noPuncs + new String(chars));
当你做一个简单的
System.out.println(chars);
你正在调用println(char x []),它很聪明地让事情看起来不错,但是当你用String连接它时,你将在原始数组上调用toString(),这只是给出了你是一个对象参考。
答案 1 :(得分:0)
我认为这就是你想要做的。您替换字符串FIRST的所有空格,然后将其转换为char数组并对其进行排序。此外," noPuncs"真的不是这个字符串是什么,它应该是" noWhitespace"。你还没有删除任何标点符号。
public static void sort(String myString) {
String noWhitespace = myString.replaceAll("\\W", "");
char[] chars = noWhitespace.toCharArray();
//sort characters
Arrays.sort(chars);
//remove punctuation and white space
System.out.println(noWhitespace + new String(chars));
}
答案 2 :(得分:0)
你几乎拥有它。 \ W看起来需要两次转义,如果你对删除了字符的字符串进行排序,你可以打印出来:
public static void sort(String myString) {
String noPuncs = myString.replaceAll("\\W", "");
char[] chars = noPuncs.toCharArray();
Arrays.sort(chars);
System.out.println(chars);
} }
答案 3 :(得分:0)
关于标点符号,您可能会从此question in stackoverflow
中找到一些有趣的信息