【问题标题】:How to remove extra spaces between two words in a string?如何删除字符串中两个单词之间的多余空格?
【发布时间】:2017-12-22 09:46:05
【问题描述】:
ViewBag.Title = "Hello (123) world"

我想要的是:

“你好 123 世界”

这是我的代码:

string input = ViewBag.Title;
System.Text.RegularExpressions.Regex re = new 
System.Text.RegularExpressions.Regex("[;\\\\/:*?\"<>|&'()-]");
ViewBag.MetaTitle = re.Replace(input, " "); //" " only one space here

使用这个,我得到:

Hello  123  world

“hello”和“123”和“world”之间多出了一个空格,因为是括号。如何删除这些多余的空格?

【问题讨论】:

  • 专业提示:(1)如果要在字符串中显示空格,请使用内联或块格式。 (2) 无需添加 please-help-me 和 kindly-help-me waffle,尤其是在标题中 - 以英语为母语的人有时会将其解释为一种乞求形式。无论如何,标题最好关注您的目标细节。

标签: c# .net


【解决方案1】:

作为替代方案,拆分并重建您的字符串:

string input = "Hello world (707)(y)(9) ";
System.Text.RegularExpressions.Regex re = new
System.Text.RegularExpressions.Regex("[;\\\\/:*?\"<>|&'()-]");
//split
var x = re.Split(input);
//rebuild
var newString = string.Join(" ", x.Where(c => !string.IsNullOrWhiteSpace(c))
                                  .Select(c => c.Trim()));

newString 等于:

你好世界 707 y 9

【讨论】:

【解决方案2】:

来自@SCoutos 中的 cmets 回答,OP 想要用空格替换某些字符,但 仅当字符周围没有空格时

修改正则表达式为:

"\\s?[;\\\\/:*?\"<>|&'()-]+\\s?"

所以 Hello World (707(y)(9)你得到

你好世界 707 y 9

示例代码:

const string TARGET_STRING = "Hello World (707(y)(9)";
var regEx = new Regex("\\s?[;\\\\/:*?\"<>|&'()-]+\\s?");
string result = regEx.Replace(TARGET_STRING, " ");

见:https://dotnetfiddle.net/KpFY6X

【讨论】:

  • @SiddharthRajput 您仍然必须像在示例中那样用空格替换所有匹配项...
  • 是的,我的代码现在可以完全按照我想要的 Stefen 代码运行。谢谢
  • @SiddharthRajput 没有转义 \s - 将正则表达式更改为可以复制并粘贴到代码中的字符串...
【解决方案3】:

用空白字符串替换不需要的字符就可以了:

ViewBag.MetaTitle = re.Replace(input, "");

【讨论】:

  • 不是一般情况,但在op的情况下,多余的空格是由错误的替换函数产生的。
  • 好的,如果可能的话请给我解决方案
  • 我现在该怎么办?
  • 逻辑应该是如果已经有空格,函数应该删除它,如果有特殊字符,它会被删除并添加空格。
  • @SiddharthRajput:你也想拆分数字吗?
猜你喜欢
  • 2015-06-08
  • 2015-02-12
  • 1970-01-01
  • 2013-12-26
  • 1970-01-01
  • 2020-05-18
  • 1970-01-01
  • 2020-06-29
  • 2015-02-08
相关资源
最近更新 更多