1. 程式人生 > >按照字串中數字大小利用Comparator排序

按照字串中數字大小利用Comparator排序

按照字串中的數字大小利用Comparator進行排序,沒有數字的排最後,這裡只做了初步的正則,只判斷第一個出現的數字,作為一個例子

其中包含純數字以及字母,漢字混編的字串

public void Sorter() {

       List<String> strs = new ArrayList<String>();
       strs.add("方式看路");
       strs.add("20路");
       strs.add("也292路");
       strs.add("2(1)路"); //2(1)和2未做排序
       strs.add("2路");
       strs.add("1路");
       strs.add("Y1路");
       System.out.println(strs);
       // 用了一個Comparetor
       Comparator<String> com = new Comparator<String>() {
           public int compare(String o1, String o2) {

               // reture 0 則不改變位置,reture 1或者其他正數,升序, return -1或其他負數,降序

               if (o1 == o2) {
                   return 0;
               }
                
               String num1 = "0";
               String num2 = "0";
               Pattern p = Pattern.compile("[0-9]+");
Matcher m = p.matcher(o1);
if(m.find()){
MatchResult mr=m.toMatchResult();
num1 = mr.group(0);
}else {
return -1;
}
Pattern p1 = Pattern.compile("[0-9]+
");
Matcher m1 = p1.matcher(o2);
if(m1.find()){
MatchResult mr=m1.toMatchResult();
num2 = mr.group(0);
}else {
return -1;
}
               return Integer.parseInt(num1) - Integer.parseInt(num2);
           }
       };
       Collections.sort(strs, com);
       System.out.println(strs);
}

相關推薦

按照字串數字大小利用Comparator排序

按照字串中的數字大小利用Comparator進行排序,沒有數字的排最後,這裡只做了初步的正則,只判斷第一個出現的數字,作為一個例子 其中包含純數字以及字母,漢字混編的字串 public void Sorter() {        List<String> st

mysql按照字串數字順序排序

開發中遇到的問題,需要按照字串中數字進行排序 1.首先擷取字串中數字 2.將截取出的數字,強轉為int型別的數字 3.按照數字排序 sql語句為: 1.先截取出BSS1,substring_index(s.sindex,':',1 2.在擷取數字(substring(substrin

1.傳入一個列表,列表元素可能是任意型別 2.使用高階函式完成非字串元素的刪除 3.然後按照字串的長度進行降序排序 4.返回新的排序後的列表

def sort_list(lt): # 過濾不需要的元素,找出是字串型別的元素並將其轉化回列表 lt = list(filter(lambda x: type(x) == str, lt)) # 用key解決按長度排序的問題 lt.sort(ke

5.2 字串數字子串的求和

【題目】:   給定一個字串str,求其中全部數字串所代表的數字之和   【要求】:   1. 忽略小數點字元,例如"A1.3",其中包含兩個數字1和3   2. 如果緊貼數字子串的左側出現字元"-", 當連續出現的數量為奇數時,則數字視為負,連續出現的數量為偶數時,則數字視為正。例如,"

CString字串數字的提取

假設CString型別的字串“192.168.1.1” void main() {  CString str = "192.168.1.1";  int a,b,c,d;  int pos;  pos = str.Find('.');  CStr

判斷一個字串數字還是字母(java)

public class Test {     public static void main(String[] args) {         String str = "wq8123fvvbvrt78931321"; &nb

給出字串分別計算出字串數字、大小寫字母的個數。(兩種方法 getBytes( ) charAt( ) )

public class LetterAndNumberCount { public static void main(String[] args) { Count("FJJgjsgfsd543632"); count1("SFsefgdg2354354fsdf"

按照集合的物件某屬性排序

Collections.sort(Resultlist, new Comparator<DatacenterScientificTalentVO>(){ /* * int compare(Perso

按照陣列的物件屬性進行排序

按照陣列中的物件屬性進行比較排序 方法一: var arry = [{value:6,url:'xxx.html'},{value:3,url:'aaa.html'},{value:9,url:'bbb.html'}] function compare(property) { //

shell數字大小的比較

【整數之間的比較】 示例指令碼: #!/bin/bash if [ $1 -gt $2 ] then echo "引數$1大於引數$2" else echo "引數$1小於引數$2" fi 數字判斷一些命令: #-gt是大於 #-lt是小於 #-eq是等於 #-ne是不等

字串的字元進行自然排序

需求:對字串中的字元進行自然順序排序思路:1.先把字串轉換字元陣列2.排序3.把字元陣列轉換回字串public class test4 { public static void main(Strin

C#List能按照List的物件某個屬性排序

public class Book    {        public Book(string inname, string inauthor, string inpublisher, int inprice)        {            this.Name = inname;         

統計字串字元出現次數以及排序

題目是這樣的,對字串“sdfgzxcvasdfxcvdf”每個字元出現次數並對其排序 public static void main(String[] args) { //統計字串中英文字元的出現次數

設定字串數字的顏色

- (NSMutableAttributedString *)modifyDigitalStr:(NSString*)str color:(UIColor *)color normalColor:(UIColor *)normalColor; {     NSRegula

去除一個字串數字的三種方法

最容易想到的一個方法是碰到數字,其後的所有字元往前移一位,程式碼如下: void fun(char s[]) { int i = 0,j; while(s[i]) { if(s[i] >

對數字型字串按照數字大小進行排序

題目:對數字型字串按照數字大小進行排序 示例: 輸入字串str1值: 11 23 -32 88 0 -228 99 29 560 33 輸出結果:-228 -32 0 11 23 29 33 88 99 560 實現程式碼: import java.lan

perl利用字串數字進行排序

 use Sort::Naturally; @them = nsort(qw( foo12a foo12z foo13a foo 14 9x foo12 fooa foolio Foolio Foo12a )); print join(' ', @them), "\n"; Prints:

shell 按照檔案指定列的數字大小排序

ls |sort -t "." -k4 -n 1.txt >2.txt [[email protected]~]# cat 2.txt 10.15.201.3 10.15.201.5 10.15.201.6 10.15.201.8 10.15.201.9

如何讓SQLServer的 itemNum 字段 按照數字大小順序排序

cas 字段 arch char 超過 lec 字符 類型 from 我的 itemNum 從1到20,可是超過了SQLServer的默認排序這樣的1101112...19234567如何才能讓排序成為這樣1234567891011.. . 解決辦法:因為 itemNum

解決 Order By 將字串型別的數字字串數字數字排序問題

oracle資料庫,欄位是varchar2型別即string,而其實存的是數字,這時候不加處理的order by的排序結果,肯定有問題   解決辦法:           &