首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >从字符串中删除所有空格的有效方法?

从字符串中删除所有空格的有效方法?
EN

Stack Overflow用户
提问于 2011-06-03 03:35:27
回答 17查看 680.5K关注 0票数 434

我正在调用一个REST API,并收到了一个XML响应。它返回一个工作区名称列表,我正在编写一个快速的IsExistingWorkspace()方法。由于所有工作区都由不带空格的连续字符组成,因此我假设找出特定工作区是否在列表中的最简单方法是删除所有空格(包括换行符)并执行此操作(XML是从web请求接收的字符串):

代码语言:javascript
代码运行次数:0
运行
复制
XML.Contains("<name>" + workspaceName + "</name>");

我知道它是区分大小写的,我依赖于此。我只需要一种方法来有效地删除字符串中的所有空格。我知道RegEx和LINQ可以做到这一点,但我对其他想法持开放态度。我最关心的是速度。

EN

回答 17

Stack Overflow用户

回答已采纳

发布于 2011-06-03 03:38:30

这是我所知道的最快的方法,即使你说你不想使用正则表达式:

代码语言:javascript
代码运行次数:0
运行
复制
Regex.Replace(XML, @"\s+", "");

在注释中记入@hypehuman,如果您计划多次执行此操作,请创建并存储一个Regex实例。这将节省每次构建它的开销,这比您想象的更昂贵。

代码语言:javascript
代码运行次数:0
运行
复制
private static readonly Regex sWhitespace = new Regex(@"\s+");
public static string ReplaceWhitespace(string input, string replacement) 
{
    return sWhitespace.Replace(input, replacement);
}
票数 726
EN

Stack Overflow用户

发布于 2013-01-30 03:58:53

我有一种不使用regexp的替代方法,它似乎执行得很好。这是Brandon Moretz答案的延续:

代码语言:javascript
代码运行次数:0
运行
复制
 public static string RemoveWhitespace(this string input)
 {
    return new string(input.ToCharArray()
        .Where(c => !Char.IsWhiteSpace(c))
        .ToArray());
 }

我在一个简单的单元测试中对其进行了测试:

代码语言:javascript
代码运行次数:0
运行
复制
[Test]
[TestCase("123 123 1adc \n 222", "1231231adc222")]
public void RemoveWhiteSpace1(string input, string expected)
{
    string s = null;
    for (int i = 0; i < 1000000; i++)
    {
        s = input.RemoveWhitespace();
    }
    Assert.AreEqual(expected, s);
}

[Test]
[TestCase("123 123 1adc \n 222", "1231231adc222")]
public void RemoveWhiteSpace2(string input, string expected)
{
    string s = null;
    for (int i = 0; i < 1000000; i++)
    {
        s = Regex.Replace(input, @"\s+", "");
    }
    Assert.AreEqual(expected, s);
}

对于1,000,000次尝试,第一个选项(没有regexp)的运行时间不到一秒(在我的机器上是700ms),第二个选项需要3.5秒。

票数 216
EN

Stack Overflow用户

发布于 2011-06-03 03:43:28

在C#中尝试字符串的replace方法。

代码语言:javascript
代码运行次数:0
运行
复制
XML.Replace(" ", string.Empty);
票数 101
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6219454

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档