.NET中删除空白字符串的10大方法.docx

.NET中删除空白字符串的10大方法.docx

ID:62001123

大小:58.88 KB

页数:7页

时间:2021-04-10

.NET中删除空白字符串的10大方法.docx_第1页
.NET中删除空白字符串的10大方法.docx_第2页
.NET中删除空白字符串的10大方法.docx_第3页
.NET中删除空白字符串的10大方法.docx_第4页
.NET中删除空白字符串的10大方法.docx_第5页
资源描述:

《.NET中删除空白字符串的10大方法.docx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、文档我们有无数方法可用于删除字符串中的所有空白,但是哪个更快呢?介绍我们有无数方法可用于删除字符串中的所有空白。大部分都能够在绝大多数的用例中很好工作,但在某些对时间敏感的应用程序中,是否采用最快的方法可能就会造成天壤之别。如果你问空白是什么,那说起来还真是有些乱。许多人认为空白就是SPACE 字符(UnicodeU+0020,ASCII 32,HTML ),但它实际上还包括使得版式水平和垂直出现空格的所有字符。事实上,这是一整类定义为Unicode字符数据库的字符。本文所说的空白,不但指的是它的正确定义,同时也包括string.Replace(”“,“”)

2、方法。这里的基准方法,将删除所有头尾和中间的空白。这就是文章标题中“所有空白”的含义。背景这篇文章一开始是出于我的好奇心。事实上,我并不需要用最快的算法来删除字符串中的空白。检查空白字符检查空白字符很简单。所有你需要的代码就是:1.char wp = ' '; 2.char a = 'a'; 3.Assert.True(char.IsWhiteSpace(wp)); 7/7文档1.Assert.False(char.IsWhiteSpace(a)); 但是,当我实现手动优化删除方法时,我意识到这并不像预期得那么好。一些源代码在微软的参考源代码库的char.cs挖掘找

3、到:1.public static bool IsWhiteSpace(char c) { 2.    if (IsLatin1(c)) { 3.        return (IsWhiteSpaceLatin1(c)); 4.    } 5.    return CharUnicodeInfo.IsWhiteSpace(c); 6.} 7. 8.然后CharUnicodeInfo.IsWhiteSpace成了: 9. 10.internal static bool IsWhiteSpace(char c) 11.{ 12.    UnicodeCategory 

4、uc = GetUnicodeCategory(c); 13.    // In Unicode 3.0, U+2028 is the only character which is under the category "LineSeparator". 14.    // And U+2029 is th eonly character which is under the category "ParagraphSeparator". 15.    switch (uc) { 16.        case (UnicodeCategory.SpaceSepara

5、tor): 17.        case (UnicodeCategory.LineSeparator): 18.        case (UnicodeCategory.ParagraphSeparator): 19.            return (true); 20.    } 21. 22.    return (false); 23.} GetUnicodeCategory()方法调用InternalGetUnicodeCategory()方法,而且实际上相当快,但现在我们依次已经有了4个方法调用!以下这段代码是由一位评论者提供的,可用于快速实现

6、定制版本和JIT默认内联:1.// whitespace detection method: very fast, a lot faster than Char.IsWhiteSpace 2.[MethodImpl(MethodImplOptions.AggressiveInlining)] // if it's not inlined then it will be slow!!! 3.public static bool isWhiteSpace(char ch) { 4.    // this is surprisingly faster than the e

7、quivalent if statement 5.    switch (ch) { 6.        case 'u0009': case 'u000A': case 'u000B': case 'u000C': case 'u000D': 7/7文档1.        case 'u0020': case 'u0085': case 'u00A0': case 'u1680': case 'u2000': 2.        case 'u2001': case 'u2002': case 'u2003': case 'u200

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。