如何在C#中用单个空格替换多个空格?
如何用C#中的一个空格替换字符串中的多个空格?
例:
1 2 3 4 5
将会:
1 2 3 4 5
#1楼
使用LINQ的另一种方法:
var list = str.Split(' ').Where(s => !string.IsNullOrWhiteSpace(s));str = string.Join(" ", list);
#2楼
老派
string oldText = " 1 2 3 4 5 ";
string newText = oldText.Replace(" ", " " + (char)22 ).Replace( (char)22 + " ", "" ).Replace( (char)22 + "", "" );Assert.That( newText, Is.EqualTo( " 1 2 3 4 5 " ) );
#3楼
对于那些不喜欢Regex
,这里是使用StringBuilder
的方法:
public static string FilterWhiteSpaces(string input){if (input == null)return string.Empty;StringBuilder stringBuilder = new StringBuilder(input.Length);for (int i = 0; i < input.Length; i++){char c = input[i];if (i == 0 || c != ' ' || (c == ' ' && input[i - 1] != ' '))stringBuilder.Append(c);}return stringBuilder.ToString();}
在我的测试中,与静态编译的Regex相比,使用大量中小型字符串时,此方法平均快16倍。 与非编译或非静态Regex相比,这应该更快。
请记住,它不会删除开头或结尾的空格,只有这样多次出现。
#4楼
RegexOptions options = RegexOptions.None;
Regex regex = new Regex("[ ]{2,}", options);
tempo = regex.Replace(tempo, " ");
#5楼
string xyz = "1 2 3 4 5";
xyz = string.Join( " ", xyz.Split( new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries ));
#6楼
根据Joel的建议,总结其他答案,并希望在我进行研究时有所改善:
您可以使用Regex.Replace()
进行此操作:
string s = Regex.Replace (" 1 2 4 5", @"[ ]{2,}", " ");
或使用String.Split()
:
static class StringExtensions
{public static string Join(this IList<string> value, string separator){return string.Join(separator, value.ToArray());}
}//...string s = " 1 2 4 5".Split (" ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).Join (" ");
#7楼
比这简单得多:
while(str.Contains(" ")) str = str.Replace(" ", " ");
#8楼
我喜欢使用:
myString = Regex.Replace(myString, @"\s+", " ");
因为它将捕获任何类型的空格(例如,制表符,换行符等),并将其替换为单个空格。
#9楼
我刚刚写了一个我喜欢的新Join
,所以我想用它来回答:
public static string Join<T>(this IEnumerable<T> source, string separator)
{return string.Join(separator, source.Select(e => e.ToString()).ToArray());
}
关于此的很酷的事情之一是,它通过在元素上调用ToString()来处理不是字符串的集合。 用法仍然相同:
//...string s = " 1 2 4 5".Split (" ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).Join (" ");
#10楼
我知道这已经很老了,但是在尝试完成几乎同一件事时遇到了这个问题。 在RegEx Buddy中找到了此解决方案。 此模式将用单个空格替换所有双重空格,并修剪前导和尾随空格。
pattern: (?m:^ +| +$|( ){2,})
replacement: $1
由于我们正在处理空白空间,因此有点难以阅读,因此这里还是用“ _”代替了“空格”。
pattern: (?m:^_+|_+$|(_){2,}) <-- don't use this, just for illustration.
“(?m:”构造启用了“多行”选项。我通常喜欢在模式本身中包括我可以包含的所有选项,这样它就更加独立了。
#11楼
我认为Matt的答案是最好的,但我不认为这是正确的。 如果要替换换行符,则必须使用:
myString = Regex.Replace(myString, @"\s+", " ", RegexOptions.Multiline);
#12楼
您可以简单地在一站式解决方案中做到这一点!
string s = "welcome to london";
s.Replace(" ", "()").Replace(")(", "").Replace("()", " ");
如果愿意,您可以选择其他方括号(甚至其他字符)。
#13楼
这是一个较短的版本,仅在您仅执行一次时才应使用,因为它每次调用时都会创建一个Regex
类的新实例。
temp = new Regex(" {2,}").Replace(temp, " ");
如果您不太熟悉正则表达式,请执行以下简短说明:
{2,}
使正则表达式搜索其前面的字符,并查找2到无限次之间的子字符串。
.Replace(temp, " ")
用空格替换字符串temp中的所有匹配项。
如果要多次使用它,这是一个更好的选择,因为它会在编译时创建regex IL:
Regex singleSpacify = new Regex(" {2,}", RegexOptions.Compiled);
temp = singleSpacify.Replace(temp, " ");
#14楼
myString = Regex.Replace(myString, " {2,}", " ");
#15楼
即使执行简单的任务,正则表达式也可能相当慢。 这将创建可以在任何string
使用的扩展方法。
public static class StringExtension{public static String ReduceWhitespace(this String value){var newString = new StringBuilder();bool previousIsWhitespace = false;for (int i = 0; i < value.Length; i++){if (Char.IsWhiteSpace(value[i])){if (previousIsWhitespace){continue;}previousIsWhitespace = true;}else{previousIsWhitespace = false;}newString.Append(value[i]);}return newString.ToString();}}
它可以这样使用:
string testValue = "This contains too much whitespace."
testValue = testValue.ReduceWhitespace();
// testValue = "This contains too much whitespace."
#16楼
试试这个方法
private string removeNestedWhitespaces(char[] st)
{StringBuilder sb = new StringBuilder();int indx = 0, length = st.Length;while (indx < length){sb.Append(st[indx]);indx++;while (indx < length && st[indx] == ' ')indx++;if(sb.Length > 1 && sb[0] != ' ')sb.Append(' ');}return sb.ToString();
}
像这样使用它:
string test = removeNestedWhitespaces("1 2 3 4 5".toCharArray());
#17楼
我可以用这个删除空格
while word.contains(" ") //double spaceword = word.Replace(" "," "); //replace double space by single space.
word = word.trim(); //to remove single whitespces from start & end.
#18楼
不使用正则表达式:
while (myString.IndexOf(" ", StringComparison.CurrentCulture) != -1)
{myString = myString.Replace(" ", " ");
}
可以在短字符串上使用,但是在带有很多空格的长字符串上效果不佳。
#19楼
没有正则表达式,没有Linq ...删除前导和尾随空格,以及将任何嵌入的多个空格分段减少到一个空格
string myString = " 0 1 2 3 4 5 ";
myString = string.Join(" ", myString.Split(new char[] { ' ' },
StringSplitOptions.RemoveEmptyEntries));
结果:“ 0 1 2 3 4 5”
#20楼
许多答案提供了正确的输出,但是对于那些寻求最佳性能的人,我确实将Nolanar的答案 (这是性能的最佳答案)提高了约10%。
public static string MergeSpaces(this string str)
{if (str == null){return null;}else{StringBuilder stringBuilder = new StringBuilder(str.Length);int i = 0;foreach (char c in str){if (c != ' ' || i == 0 || str[i - 1] != ' ')stringBuilder.Append(c);i++;}return stringBuilder.ToString();}}
#21楼
使用正则表达式模式
[ ]+ #only spacevar text = Regex.Replace(inputString, @"[ ]+", " ");
#22楼
StringBuilder和Enumerable.Aggregate()的混合使用,作为字符串的扩展方法:
using System;
using System.Linq;
using System.Text;public static class StringExtension
{public static string StripSpaces(this string s){return s.Aggregate(new StringBuilder(), (acc, c) =>{if (c != ' ' || acc.Length > 0 && acc[acc.Length-1] != ' ')acc.Append(c);return acc;}).ToString();}public static void Main(){Console.WriteLine("\"" + StringExtension.StripSpaces("1 Hello World 2 ") + "\"");}
}
输入:
"1 Hello World 2 "
输出:
"1 Hello World 2 "
#23楼
// Mysample stringstring str ="hi you are a demo";//Split the words based on white sapcevar demo= str .Split(' ').Where(s => !string.IsNullOrWhiteSpace(s));//Join the values back and add a single space in betweenstr = string.Join(" ", demo);//output: string str ="hi you are a demo";
#24楼
这是对Nolonar原始答案的略微修改 。
检查字符是否不仅是空格,而且是任何空格,请使用以下命令:
它将用单个空格替换任何多个空格字符。
public static string FilterWhiteSpaces(string input)
{if (input == null)return string.Empty;var stringBuilder = new StringBuilder(input.Length);for (int i = 0; i < input.Length; i++){char c = input[i];if (i == 0 || !char.IsWhiteSpace(c) || (char.IsWhiteSpace(c) && !char.IsWhiteSpace(strValue[i - 1])))stringBuilder.Append(c);}return stringBuilder.ToString();
}
如何在C#中用单个空格替换多个空格?相关推荐
- python中空格替换_在Python中用单个空格替换多个空格
本问题已经有最佳答案,请猛点这里访问. 我有这根绳子: mystring = 'Here is some text I wrote ' 如何将双空格.三空格(-)替换为一个空格 ...
- 正则表达式用单个空格替换多个空格
给定一个像这样的字符串: "The dog has a long tail, and it is RED!" 什么样的jQuery或JavaScript魔术可以用来将空间限制为最多 ...
- 如何在Excel中用单元格中的单个空格替换多个空格?
在Excel中,正常的"查找和替换"功能可能无法很好地解决我们的问题,因此,我们可以应用一个简单的公式来处理它. 请这样做: 1. 输入以下公式: = TRIM(SUBSTITUT ...
- 如何在Vim中用换行符替换字符
我想替换每个,在由新线当前文件: :%s/,/\n/g 但它会插入看起来像^@而不是实际的换行符. 该文件不在DOS模式下或其他任何状态. 我该怎么办? 如果您像我一样好奇,请查看问题, 为什么\\ ...
- 如何在 Vim 中用换行符替换字符
问: 我正在尝试用新行替换当前文件中的每个 ,: :%s/,/\n/g 但它会插入看起来像 ^@ 的东西,而不是实际的换行符.该文件未处于 DOS 模式或任何状态. 我应该怎么办? 如果您像我一样好奇 ...
- python怎样输出多个空格_Python实现将多个空格换为一个空格.md的方法
python 如何把很多空格变成一个空格?现在小编的日志...是纯粹的空格还是制表位?你告诉小编,小编给你写一个. python中,如何将字符串中多个空格分隔的修改为一例如,有一个字符串"1 ...
- java 正则 空格_Java中关于空格的正则表达式
public class Test { public static void main(String[] args) { String s = "GET /index ...
- 有一种空格叫做--不间断空格(空格保存到数据库变成了问号)
半角空格:\u0020 英文符号 代码中常用 全角空格:\u3000 中文符号 中文文章中常用 不间断空格:\u00A0 不间断空格 主要在 office 中使用,让一个单词在结尾处不会换 ...
- Excel技巧:删除换行符、文本前空格、文本中间空格
转自:微点阅读 https://www.weidianyuedu.com Excel中的空格有三种,强制换行符,文本前空格,文本中间空格,下面分别来介绍一下操作方法. 我们用处理excel数据的时候 ...
最新文章
- 腾讯最大股东收购了 Stack Overflow,以后“抄代码”都要付费了么?
- 《曾国藩发迹史》--汪衍振
- LINUX 内核代码备忘录
- HTTPS 跟 HTTP区别简述
- 马化腾谈滴滴;苹果供应商研发柔性玻璃;丁磊谈沉迷手机 | 极客头条
- 漫谈 Clustering (5): Hierarchical Clustering
- 离散数学及其应用 第三章:命题逻辑
- 战德臣计算机导论第5讲,地方高校“计算机导论”算法思维培养的教学设计
- DVWA靶机安装(超详细教程)
- fiddler+mitmproxy+夜神模拟器安装
- 【毕业设计】机器学习车牌识别系统 - python opencv
- excel表格筛选某一列重复数据
- 安装新的package后出现异常错误
- chromium下载编译过程
- 量化分析自己的生活——日活统计表,但求客观公正,勿违彼时言!
- 【Unity】 结合DoTween制作抛物线效果
- GetElementByName
- java求三角形周长 面积_用java如何求三角形的周长和面积?
- OPPO救砖通用:oppo A33T(移动定制版)黑砖救砖
- Typora使用方法
热门文章
- 帮我看看这个是什么意思 c++代码
- 人生必做清单-----持续更新
- ListView getChildCount 以及getChildAt 坑 误区指南
- JavaScript 仿ios滑动选择器
- Activity销毁重建导致LiveData数据倒灌
- Android10.0系统启动之Launcher(桌面)启动流程-[Android取经之路]
- NodeJs初学者经典入门解析
- Android 开源框架ViewPageIndicator 和 ViewPager 仿网易新闻客户端Tab标签
- JavaScript语言基础6
- 微信小游戏开发教程-新建项目