代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
C#
】
中英文排序算法
作者:
欣玉
/ 发布于
2016/4/26
/
757
/// /// 获取一个汉字字符串的首字母的code /// /// 一个字符串 /// public static int GetSpellByOneChar(char onechar) { string text = onechar.ToString(); byte[] arrCN = Encoding.Default.GetBytes(text); if (arrCN.Length > 1)//分析汉字. { int area = (short)arrCN[0]; int pos = (short)arrCN[1]; int code = (area << 8) + pos; int[] areacode = { 45217, 45253, 45761, 46318, 46826, 47010, 47297, 47614, 48119, 48119, 49062, 49324, 49896, 50371, 50614, 50622, 50906, 51387, 51446, 52218, 52698, 52698, 52698, 52980, 53689, 54481 }; for (int i = 0; i < 26; i++) { int max = 55290; if (i != 25) max = areacode[i + 1]; if (areacode[i] <= code && code < max) { return i + 200; } } return 0;//其他字符 } else { //将小写字母和大写字母归为一类. if (arrCN[0] > 94 && arrCN[0] < 123) { return arrCN[0] - 32; } return arrCN[0]; } } 好了,既然获取字符的功能实现,那么我们现在来实现IComparable接口. 我们假设,有一个类名叫SortByChines 它有个属性叫Name. public class SortByChines:IComparable { public string Name{get;set;} private int _SortNumber=1; /// /// 是否使用增序方式排序. /// public bool IncreasingSort { get { if (_SortNumber > 0) return true; return false; } set { if (value) _SortNumber = 1; else { _SortNumber = -1; } } } #region IComparable 成员 public int CompareTo(object obj) { //按照递增的方式进行排序. SortByChines c = obj as SortByChines; int length = Math.Min(c.Name.Length, this.Name.Length); //比较长度相同部分 for (int i = 0; i < length; i++) { int indexc = GetSpellByOneChar(c.Name[i]); int indext = GetSpellByOneChar(this.Name[i]); if (indexc > indext) return -_SortNumber ; if (indext > indexc) { return _SortNumber; } } //如果长度相同部分是一致的,那么字符串长的排在后面. if (c.Name.Length > this.Name.Length) return -_SortNumber; else { return _SortNumber; } } } 这样中英文排序的功能就实现了. 我们现在来测试一下,这个功能是否已经实现.为了简单,我们在控制台进行测试就可以了 public static SortByChines GetSort(string name) { SortByChines c = new SortByChines(); c.Name = name; return c; } public static void Test() { List list = new List(); list.Add(GetSort("wang")); list.Add(GetSort("项目")); list.Add(GetSort("想买吗")); list.Add(GetSort("文件")); list.Add(GetSort("文件夹")); list.Add(GetSort("文字")); list.Add(GetSort("zhong")); list.Add(GetSort("zwol")); list.Add(GetSort("chong")); list.Add(GetSort("after")); list.Add(GetSort("文化")); list.Add(GetSort("生产吗")); list.Add(GetSort("56")); list.Add(GetSort("46ong")); list.Add(GetSort("生名")); list.Add(GetSort("编辑")); list.Add(GetSort("Z5")); list.Add(GetSort("ZZ")); list.Sort(); foreach (var item in list) { Console.WriteLine(item.Name ); } } static void Main(string[] args) { Test(); Console.Read(); }
试试其它关键字
排序算法
同语言下
.
C#实现的html内容截取
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
.
实现对图片上传的接收
.
去除字符串中的空格,回车,换行符转变成‘;’在按‘
.
按照回车换行符分割字符串
.
文件MD5码 比较,检测文件是否一样
可能有用的
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
欣玉
贡献的其它代码
(
17
)
.
定时清空文件内容,定时记录文件大小
.
JAVA对象转换为JSON及日期格式转换处理
.
分割字符串返回表
.
精确测量一个方法执行所花费的时间
.
创建SQLSERVER MD5()
.
获取当天或某个日期是星期几
.
可重复使用的存储过程(增,删,改,查,分页)
.
批量从本地上传文件到指定服务器或从指定服务器下载文
.
中英文排序算法
.
List的Find方法的使用
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3