我想知道C#里string方法里面的Trim()的执行原理。注意是执行原理,不是怎么用。
比如说,它继承自那个接口,用什么方法实现的,实现原理是什么。还望高手赐教一下,呵呵注:标题中的xx译为“蛋疼”
比如说,它继承自那个接口,用什么方法实现的,实现原理是什么。还望高手赐教一下,呵呵注:标题中的xx译为“蛋疼”
解决方案 »
- office 2012的菜单怎么能做出来?
- 有没有这样的办法呢~~~~~~~~~~~~~~~~~~~~~~~~~~~~【关于数据库】
- 求手机号码验证正则表达式
- 在服务器上有堆栈问题,而在开发平台不报错误
- windows服务启动立刻停止!!!!
- 实在忍不住要问大家了!怎样以当前的会话状态以一个HttpWebRequest去下载当前的验证码图片?
- 请问为什么在保存csv文件的时候为乱码(英文可以正常显示,中文为乱码)?
- 如何获取网页中小于号 <我需要的内容> 和大于号中的内容
- 请问如何把带逗号的字符串转变为数字类型
- 关闭子窗体应该用Close()还是Dispose()
- C# 实现 用QQ邮箱发邮件的问题
- ADO.net 实体数据模型的疑问?
我想知道执行Trim()方法时程序到底是怎么执行的
{
return this.TrimHelper(2);
}private string TrimHelper(int trimType)
{
int end = this.Length - 1;
int start = 0;
if (trimType != 1)
{
start = 0;
while (start < this.Length)
{
if (!char.IsWhiteSpace(this[start]))
{
break;
}
start++;
}
}
if (trimType != 0)
{
end = this.Length - 1;
while (end >= start)
{
if (!char.IsWhiteSpace(this[end]))
{
break;
}
end--;
}
}
return this.CreateTrimmedString(start, end);
}
{ (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);
}
}
直接string.replace(" ","");
就相当于trim()勒。
你这把所有空格都去了