建站经验 experience
当前位置:首页 > 网站建设专题 > 建站经验
三个.net中删除空白字符串的技巧
发布日期:2015-08-24 阅读次数:1203 字体大小:

在asp.net中,相信很多程序员都会遇到删除空白字符串的问题,那么在asp.net中删除空白字符串也是有技巧的,我们该怎样去做呢?下面广州网站制作镭拓科技总结了以下三点,希望可以帮我有需要的你!

一、循环交换法

用代码实现循环,并使用StringBuilder类,通过依靠StringBuilder的内在优化来创建新的字符串。为了避免任何其他因素对本实施产生干扰,

不调用其他的方法,并且通过缓存到本地变量避免访问类成员。最后通过设置StringBuilder.Length将缓冲区调整到合适大小。

public static string TrimAllWithLexerLoop(string s) {
  int length = s.Length;
  var buffer = new StringBuilder(s);
  var dstIdx = 0;
  for (int index = 0; index < s.Length; index++) {
    char ch = sindex;
    switch (ch) {
      case '\u0020': case '\u00A0': case '\u1680': case '\u2000': case '\u2001':
      case '\u2002': case '\u2003': case '\u2004': case '\u2005': case '\u2006':
      case '\u2007': case '\u2008': case '\u2009': case '\u200A': case '\u202F':
      case '\u205F': case '\u3000': case '\u2028': case '\u2029': case '\u0009':
      case '\u000A': case '\u000B': case '\u000C': case '\u000D': case '\u0085':
        length--;
        continue;
      default:
        break;
    }
    bufferdstIdx++ = ch;
  }
  buffer.Length = length;
  return buffer.ToString();;
}

二、字符数组复制法

这种方法类似于字符数组原地转换法,但它使用Array.Copy复制连续非空白“字符串”的同时跳过空格。最后,它将创建一个适当尺寸的字符数组,并用相同的方式返回一个新的字符串。

public static string TrimAllWithCharArrayCopy(string str) {
  var len = str.Length;
  var src = str.ToCharArray();
  int srcIdx = 0, dstIdx = 0, count = 0;
  for (int i = 0; i < len; i++) {
    if (isWhiteSpace(srci)) {
      count = i - srcIdx;
      Array.Copy(src, srcIdx, src, dstIdx, count);
      srcIdx += count + 1;
      dstIdx += count;
      len--;
    }
  }
  if (dstIdx < len)
    Array.Copy(src, srcIdx, src, dstIdx, len - dstIdx);
  return new string(src, 0, len);
}

三、循环字符法

这种方法几乎和前面的循环交换法相同,不过它采用if语句来调用isWhiteSpace(),而不是乱七八糟的switch伎俩 :)。

public static string TrimAllWithLexerLoopCharIsWhitespce(string s) {
  int length = s.Length;
  var buffer = new StringBuilder(s);
  var dstIdx = 0;
  for (int index = 0; index < s.Length; index++) {
    char currentchar = sindex;
    if (isWhiteSpace(currentchar))
      length--;
    else
      bufferdstIdx++ = currentchar;
  }
  buffer.Length = length;
  return buffer.ToString();;
}

以上只是部分的技巧,如想了解更多的asp.net建站技术,请继续关注广州网站制作公司镭拓科技,多年的asp.net建站经验!