2014-03-27 34 views
0

需要一些幫助,我需要從用戶輸入詞中刪除空格和標點符號。然後通過重新排列字母來排序(沒有具體的方式)。如何對字符進行排序並去除字符串中的標點符號java

我的問題是,我可以刪除標點符號和空格,或者我可以排序字符,但我不能讓它做到這一點。它只是打印出十六進制。請任何幫助。

公共類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

你已經差不多了。該\ W看起來像它需要被轉義兩次,如果你那種有字符刪除字符串,你可以只打印:

public static void sort(String myString) { 

    String noPuncs = myString.replaceAll("\\W", ""); 

    char[] chars = noPuncs.toCharArray(); 
    Arrays.sort(chars); 
    System.out.println(chars); 

} } 
+0

謝謝你非常感謝你,花了兩個小時試圖弄清楚這一點。希望有一天能通過java jedi喜歡你。 – mxgenius

0

您需要的字符數組手動轉換回字符串:

System.out.println(noPuncs + new String(chars)); 

當你做一個普​​通的

System.out.println(chars); 

您所呼叫的的println(焦X []),這是聰明的有關使事情看起來不錯,但是當你用一個String連接它時,你會在一個基本數組上調用toString(),這隻會給你一個對象引用。

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)); 
} 
相關問題