发一个有点让人 XX 的小小问题。

cejay 2010-10-20 09:09:46
我想知道C#里string方法里面的Trim()的执行原理。注意是执行原理,不是怎么用。
比如说,它继承自那个接口,用什么方法实现的,实现原理是什么。

还望高手赐教一下,呵呵

注:标题中的xx译为“蛋疼”
...全文
396 28 打赏 收藏 转发到动态 举报
写回复
用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)

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧