Java 包含中文數字的文字排序

2021-09-02 17:58:57 字數 1258 閱讀 6151

需排序字段 如:xx八十一局, xx十二局, xx三十四局, xx四局, xx五局, xx一百零六局, xx七局

期望排序結果:xx四局, xx五局, xx七局, xx十二局, xx三十四局, xx八十一局, xx一百零六局

思路:擷取 各個字串的中文數字部分,然後將其轉換為阿拉伯數字後進行比較。

擷取中文字串 方法:

/**

* 擷取第一處的中文數字字串

* @param str

* @return

*/private static string getnumberstr(string str)

} else }}

return stringbuilder.tostring();

}

將中文數字轉換為 阿拉伯數字,這裡用的是 tuzi294 的這篇文章的**,略做修改。

/**

* 將中文數字轉換為 阿拉伯數字

* @author tuzi294

* @param chinesenumber 中文數字字串

* @return 轉換後的阿拉伯數字

*/public static long chinesenumber2int(string chinesenumber) ;

long num = 0;

char arr = chinesenumber.tochararray();

int len = arr.length;

stackstack = new stack();

for (int i = 0; i < len; i++) else

//如果棧中有比val小的元素則出棧,累加,乘n,再入棧

while (!stack.isempty() && stack.peek() < val)

//判斷是否經過乘法處理

if (tempsum == 0) else }}

//計算最終的和

while (!stack.isempty())

return num;

}

呼叫方法

public static void main(string args) );

system.out.println(data);

}

iOS 中文數字排序

之前做通訊錄聯絡人的時候用到bmchinesesort,能分割成兩個陣列,乙個是英文本的,乙個是英文本母下的所有物件陣列 但是它對數字並不起作用,並沒有從小到大排序,現在專案,我並不需要英文本母下的陣列,增加數字排序 從小到大 解決方案如下 按拼音排序 nsinteger carnamesort i...

SqlServer按中文數字排序

表資料 按名稱排序 並不能得到一二三四五六的順序 找到中文數字在 一二三四五六七 十 的位置 select id,name,substring name,2,1 as 中文數字,charindex substring name,2,1 一二三四五六七 十 as 中文數字所在位置 from liwei...

Oracle中文 數字混雜欄位的排序

對oracle中中文 數字混雜形式的字段進行排序的方法 例如 order by nlssort 欄位名,nls sort schinese pinyin m to number translate 欄位名,0123456789 欄位名,0123456789 nlssort 函式 如果資料庫字符集選用...