社区
C#
帖子详情
c#的字符串是如何进行大小比较的?
kwklover
2007-07-28 05:43:14
即String.CompareOrdinal(strA,strB)
内部的实现原理或机制是什么 ?
...全文
1652
13
打赏
收藏
c#的字符串是如何进行大小比较的?
即String.CompareOrdinal(strA,strB) 内部的实现原理或机制是什么 ?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
cheng_er
2008-12-03
打赏
举报
回复
3、5、6不错
学到了
zjybushiren88888
2008-12-03
打赏
举报
回复
按照unicode编码
Layne的博客
2008-12-03
打赏
举报
回复
刚好看了一篇文章,其实就是实现CompareOrdinal方法,还涉及到了冒泡排序,可以看一下
http://www.xianguo.com/go.php?fi=432020048
king520520
2008-11-30
打赏
举报
回复
即String.CompareOrdinal(strA,strB)
内部的实现原理或机制是什么 ?
答:
字符串是按照unicode编码比较的.
比如说abc和ab相比较,先比第一个a,如果相等比较第二个b.
如果第二个b也相等比较c,而abc中包括c,ab没有c,所以abc大,返回+1
luyanvv
2008-11-30
打赏
举报
回复
我晕,唉,现在还是在后面的哪,看不懂
OceanLee
2007-07-30
打赏
举报
回复
怎么反编译的阿?
kwklover
2007-07-30
打赏
举报
回复
@viena() 维也纳(windows7)
我也反编译过他的原代码,不过没看出什么东西来,所以来这里问问各位高手...
@windboyzsj(落叶)
谢谢你的推荐.
windboyzsj
2007-07-28
打赏
举报
回复
更正:
实例的Equals()
静态的Equals()
静态的Compare()
实例的CompareTo()
实例的CompareOrdinal()
==操作符
windboyzsj
2007-07-28
打赏
举报
回复
说白了就是逐字符比较编码(.NET中字符用Unicode编码)的大小
========================
不完全是,有些比较是否相等时,是比较散列码的,有些是比较引用的,有些则是逐字符比较
另外比较方法有很多种
实例的Equals()
静态的Equals()
CompareTo()
CompareTo()
CompareOrdinal()
==操作符
个种比较在不同情况可能有不用的效率
C#字符串还涉及内置池,Automation 等技术,当字符串数据量较大是,优化的代码与
不优化的代码性能可能差好几十倍的
推荐你一本书<<C#字符串和正规表达式参考手册>> 清华出版社
里面有较精彩的解析
viena
2007-07-28
打赏
举报
回复
说白了就是逐字符比较编码(.NET中字符用Unicode编码)的大小
viena
2007-07-28
打赏
举报
回复
反编译看一下:
public static int CompareOrdinal(string strA, string strB)
{
if (strA == strB)
{
return 0;
}
if (strA == null)
{
return -1;
}
if (strB == null)
{
return 1;
}
return CompareOrdinalHelper(strA, strB);
}
private static unsafe int CompareOrdinalHelper(string strA, string strB)
{
int num = Math.Min(strA.Length, strB.Length);
int num2 = -1;
fixed (char* str = ((char*) strA))
{
char* chPtr = str;
fixed (char* str2 = ((char*) strB))
{
char* chPtr2 = str2;
char* chPtr3 = chPtr;
char* chPtr4 = chPtr2;
while (num >= 10)
{
if (*(((int*) chPtr3)) != *(((int*) chPtr4)))
{
num2 = 0;
break;
}
if (*(((int*) (chPtr3 + 2))) != *(((int*) (chPtr4 + 2))))
{
num2 = 2;
break;
}
if (*(((int*) (chPtr3 + 4))) != *(((int*) (chPtr4 + 4))))
{
num2 = 4;
break;
}
if (*(((int*) (chPtr3 + 6))) != *(((int*) (chPtr4 + 6))))
{
num2 = 6;
break;
}
if (*(((int*) (chPtr3 + 8))) != *(((int*) (chPtr4 + 8))))
{
num2 = 8;
break;
}
chPtr3 += 10;
chPtr4 += 10;
num -= 10;
}
if (num2 == -1)
{
goto Label_0101;
}
chPtr3 += num2;
chPtr4 += num2;
int num3 = chPtr3[0] - chPtr4[0];
if (num3 != 0)
{
return num3;
}
return (chPtr3[1] - chPtr4[1]);
Label_00E7:
if (*(((int*) chPtr3)) != *(((int*) chPtr4)))
{
goto Label_0105;
}
chPtr3 += 2;
chPtr4 += 2;
num -= 2;
Label_0101:
if (num > 0)
{
goto Label_00E7;
}
Label_0105:
if (num > 0)
{
int num4 = chPtr3[0] - chPtr4[0];
if (num4 != 0)
{
return num4;
}
return (chPtr3[1] - chPtr4[1]);
}
return (strA.Length - strB.Length);
}
}
}
he_8134
2007-07-28
打赏
举报
回复
编码里面的位置~~~~~
viena
2007-07-28
打赏
举报
回复
通过计算每个字符串中相应Char对象的数值来比较两个指定的String对象
c#
中
字符串
的
比较
概要:本文所指
字符串
比较
并非长度
比较
。1.
c#
字符串
比较
法则。2.部分
c#
字符串
的
比较
方法
c#
字符串
比较
法则
c#
语言中使用一些方法对俩个
字符串
进行
比较
时,不是
比较
字符串
的长度,判断两
字符串
的
大小
,主要遵循的法则是按照字典排序先后而
进行
比较
。
比较
两个
字符串
时,会将其每个字符
进行
逐个
比较
,如若相同则
比较
下一个,直到出现不同的字符或遇到\0为止。
比较
英文
字符串
时所遵循,在字典中排序在后的单词大...
C#
字符串
是根据什么
比较
的?
c语言中
字符串
大小
的
比较
: 如果单纯
比较
长度,直接调用类似于strlen()之类的函数就可以,加以
比较
即可. 如果
比较
字符串
的
大小
,则
比较
的是字符的ASCII编码的
大小
.你搜索一下ASCII码表就可以得知每一个ASCII字符的
大小
. 参考http://www.wpyz.net/noip/11-1.asp 在
比较
时,设置一个计数器,从零开始,一直循环到最短的那个字符结束,一位一位进
C#
字符串
比较
字符串
比较
C#
字符串
比较
1、Compare(string s1,string s2)的用法。 该方法的三种返回类型分别是: 如果S1大于S2,结果为1; 如果S1等于S2,结果为0; 如果S1小于S2,结果为-1; 那么如何来判断S1与S2的
大小
关系呢? 先
比较
第一位字母,如果字母相同,接着
比较
往下
比较
,如果找到某一位上的两个字母不相等,则字母小的所在的
字符串
小(a-z,代表字符增大的方向),如果一个短
字符串
已经
比较
完了,每位的字母都相等,则长
字符串
大。
字符串
相等的情况...
C#
语言的
字符串
处理
C#
支持自定义格式,可以对数字、日期等
进行
自定义格式化:```csharp// 货币格式,结果为 "$123.46"// 结果为 "2023-10-01"```
C#
中的
字符串
处理是开发中的一个重要环节,涉及到
字符串
的创建、操作、格式化和存储等多个方面。理解
字符串
的基本特性和常用方法,对于高效编程是非常重要的。在处理
字符串
时,应根据具体场景选择合适的工具和方法,例如在频繁修改
字符串
时使用,在需要复杂匹配时使用正则表达式等。通过合适的管理
字符串
资源,可以有效地提高程序性能并减少内存消耗。
C#
111,093
社区成员
642,554
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章