社区
C#
帖子详情
发一个有点让人 XX 的小小问题。
cejay
2010-10-20 09:09:46
我想知道C#里string方法里面的Trim()的执行原理。注意是执行原理,不是怎么用。
比如说,它继承自那个接口,用什么方法实现的,实现原理是什么。
还望高手赐教一下,呵呵
注:标题中的xx译为“蛋疼”
...全文
450
28
打赏
收藏
发一个有点让人 XX 的小小问题。
我想知道C#里string方法里面的Trim()的执行原理。注意是执行原理,不是怎么用。 比如说,它继承自那个接口,用什么方法实现的,实现原理是什么。 还望高手赐教一下,呵呵 注:标题中的xx译为“蛋疼”
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
28 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
chen870201
2010-10-21
打赏
举报
回复
去除前后空格- -
pigadd
2010-10-21
打赏
举报
回复
[Quote=引用 20 楼 angelo1011 的回复:]
- -|||
直接string.replace(" ","");
就相当于trim()勒。
[/Quote]
非也,Trim()只去前后空格
你这把所有空格都去了
r2010000hyq
2010-10-21
打赏
举报
回复
看一下,学习
lrh_079
2010-10-21
打赏
举报
回复
refletor
好方法啊
杨友山
2010-10-21
打赏
举报
回复
看一下,学习
firstcoo
2010-10-21
打赏
举报
回复
学习了。真奇怪,这么多高手,联合起来,怎么就没搞定微软呢。
zekelove
2010-10-21
打赏
举报
回复
不清楚~~~~~~
troy2012
2010-10-21
打赏
举报
回复
路過,幫頂..
angelo1011
2010-10-20
打赏
举报
回复
- -|||
直接string.replace(" ","");
就相当于trim()勒。
yudengchang
2010-10-20
打赏
举报
回复
见识了,牛人真多.............
qgj1655
2010-10-20
打赏
举报
回复
原理就是,从前面一个字符一个字符去判断,然后到后面一个字符一个字符去判断。
wiki14
2010-10-20
打赏
举报
回复
[Quote=引用 3 楼 cejay 的回复:]
二楼大哥,
我想知道执行Trim()方法时程序到底是怎么执行的
[/Quote]
都告诉你是那个dll里的,你跟着这个线索反编译一下去看就可以了。
lmdkboy
2010-10-20
打赏
举报
回复
make~~学习了
cejay
2010-10-20
打赏
举报
回复
为了让跟多的和我一样不明白的人看到高手的回答,就先不结贴了
cejay
2010-10-20
打赏
举报
回复
我仅仅是想知道Trim这个最简单的方法到底是怎么写的,
我也没什么用处,就是忽然想知道罢了,呵呵
kkbac
2010-10-20
打赏
举报
回复
都是大牛,学习。
hao1hao2hao3
2010-10-20
打赏
举报
回复
干嘛?想自己实现?通过自带的反编译工具试试。
cejay
2010-10-20
打赏
举报
回复
一会回了这么多楼,呵呵,我以为我这个无聊的问题不会有人回的呐,谢谢几位楼上的大哥
wuyq11
2010-10-20
打赏
举报
回复
internal static readonly char[] WhitespaceChars =
{ (char) 0x9, (char) 0xA, (char) 0xB, (char) 0xC, (char) 0xD, (char) 0x20, (char) 0x85,
(char) 0xA0, (char)0x1680,
(char) 0x2000, (char) 0x2001, (char) 0x2002, (char) 0x2003, (char) 0x2004, (char) 0x2005,
(char) 0x2006, (char) 0x2007, (char) 0x2008, (char) 0x2009, (char) 0x200A, (char) 0x200B,
(char) 0x2028, (char) 0x2029,
(char) 0x3000, (char) 0xFEFF };
public String Trim(params char[] trimChars) {
if (null==trimChars || trimChars.Length == 0) {
trimChars=WhitespaceChars;
}
return TrimHelper(trimChars,TrimBoth);
}
public String TrimStart(params char[] trimChars) {
if (null==trimChars || trimChars.Length == 0) {
trimChars=WhitespaceChars;
}
return TrimHelper(trimChars,TrimHead);
}
public String TrimEnd(params char[] trimChars) {
if (null==trimChars || trimChars.Length == 0) {
trimChars=WhitespaceChars;
}
return TrimHelper(trimChars,TrimTail);
}
public String Trim() {
return TrimHelper(WhitespaceChars,TrimBoth);
}
private String TrimHelper(char[] trimChars, int trimType) {
int end = this.Length-1;
int start=0;
if (trimType !=TrimTail) {
for (start=0; start < this.Length; start++) {
int i = 0;
char ch = this[start];
for( i = 0; i < trimChars.Length; i++) {
if( trimChars[i] == ch) break;
}
if( i == trimChars.Length) {
break;
}
}
}
if (trimType !=TrimHead) {
for (end= Length -1; end >= start; end--) {
int i = 0;
char ch = this[end];
for(i = 0; i < trimChars.Length; i++) {
if( trimChars[i] == ch) break;
}
if( i == trimChars.Length) {
break;
}
}
}
int len = end -start + 1;
if (len == this.Length) {
return this;
}
else {
if( len == 0) {
return String.Empty;
}
return InternalSubString(start, len, false);
}
}
wuyq11
2010-10-20
打赏
举报
回复
查看IL
refletor
加载更多回复(6)
suse安装
小小
输入法
作者:帅得不敢出门 C++哈哈堂 31843264 转载请保留此信息最近换了新suse系统,11.3升到11.4,结果
发
现firefox无法调用scim 无法输入中文是件很痛苦的事,只好找替代器了,介绍个闭源的linux输入法 yong
小小
输入法 安装方法: opensuse 11.4 先把7z包解压到你要的安装目录(7z解压工具在Linux下是p7zip) cd yong 安装 sudo ./yong-tool.sh --install 选择开机自动启动 ./yon
小小
电脑安装Zotero:华为MatePad 11的学术新生
我的华为MatePad 11已经闲置了好一阵子,直到
发
现了“
小小
电脑”这个神奇的软件。一开始,我认为
小小
电脑就是个简单的Debian虚拟Linux环境,直接搜索“Linux安装Zotero”就开始操作。在于:Zotero官网并没有明确标注他们的版本只适用于amd64架构,而不适用于arm64架构。而我的华为MatePad 11搭载的正是ARM架构的处理器,
小小
电脑系统也只能安装arm64版本的软件。如果是
小小
电脑,可以把下载的文件移动到文件系统中opt文件中,在终端输入以下指令。
小小
电脑安装logisim-evolution
在墨水屏上运行
小小
电脑,在
小小
电脑上安装jdk25,运行logisim-evolution与vscode
wrk的
一个
小小
小教程
你之前跑出的数据:baseline QPS ~23,896 / P99 13.03ms → Caffeine 后 QPS ~25,114 / P99 5.69ms(P99 降低 56%)注意:输出中若出现 Socket errors 或 Non-2
xx
行,说明有连接失败或服务端报错,此时 QPS 数据不可信!推荐固定加上 --latency,默认输出不含延迟分布,这个参数让你看到 P50/P75/P90/P99。通常从 -t4 -c100 开始,逐步增加 -c 直到 QPS 不再增长,此时即为服务瓶颈。
海思HI35
xx
平台CPU温度监测
前言 随着芯片的集成度提高,芯片内部的晶体管数量也不断增多,产生的热量也难以通过
小小
芯片封装散
发
出去(常用封装材料有塑料、陶瓷、玻璃、金属,CPU一般采用金属材料封装),高温是会对芯片的性能产生极其有害影响的。研究表明,芯片温度每升高1℃其运行可靠性降低3.8%,而芯片温度每下降10%其寿命增加50%,而在电子设备失效统计中也有超过50%是由于过热导致的。大数据后起之秀贵州,就凭借着优越的温和气...
C#
111,129
社区成员
642,540
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章