2015-07-02 44 views
0

我有一個檢票web應用,即以下面的順序進行排序的錶行:影響的數字和charachters的順序比較方法

升序:

  • 第一charachters(AZ)
  • 然後數字(1-9)

現在我正在寫webunit測試來測試排序機制,但它似乎改變了charachters和數字的順序,如:

升序:

  • 第一數字(1-9)
  • 然後charachters(AZ)

所以這個代碼將失敗,排序上升時,它遇到了兩個條目:

  • ...
  • ZZZ
  • ...

我simplyfied排序代碼:

protected int compare(String val1, String val2) { 
     return val1.compareTo(val2); 
} 

什麼告訴我的測試代碼來測試像我的web應用程序的順序產生它的 「Java的方式」? 可能是類似於Collator?我更喜歡通過第三方庫的自編Comparator的JRE解決方案。

+1

我不知道內置的JRE解決方案。編寫你自己的'Comparator'或者打包字符串是一個自定義'Comparable'類可能是你最好的選擇。 – childofsoong

回答

1

你可以嘗試使用RuleBasedCollator這樣的:

String rule = "<a,A<b,B<c,C<[...]<'1'<'2'<'3'<'4'[...]"; 
RuleBasedCollator collator = new RuleBasedCollator(rule); 
return collator.compare(val1,val2); 
+0

謝謝,這是工作。你能編輯規則並在'A'後刪除第二個逗號嗎? – cdanzmann