如何保留字符串中的一个空格!

好好学习29 2013-12-24 03:18:03
比如字符串是下面这样子:每个字符之间有不确定个数的空格,怎么才能使每个字符之间只存在一个空格。

//原始字符串
string s="a b c d f g";
//想得到的结果
string s="a b c d f g";
...全文
327 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
好好学习29 2013-12-25
  • 打赏
  • 举报
回复
引用 12 楼 emailtome 的回复:
string.Join(" ", from s in "a b c d f g" where s != 0x20 select s);
还能这么写...
好好学习29 2013-12-25
  • 打赏
  • 举报
回复
引用 5 楼 jiaoshiyao 的回复:
我在学校的时候老师也让我做过这个算法题 当时我这么做的

//原始字符串
  string s="a b  c   d    f g";
  s = s.Trim();
  string resString = "";
  for(int i = 1 ; i < s.Length;i++){
     if(s[i]==" "&& s[i-1]=="")continue;
     resString+=s[i].ToString();
  }
  s=resString;
唔,刚开始我也这么写的,没弄出来,结贴啦!
  • 打赏
  • 举报
回复
引用 12 楼 emailtome 的回复:
string.Join(" ", from s in "a b c d f g" where s != 0x20 select s);
同意!如果确实是“每一个字符之间都有空格”,那么确实是这样比较好。
  • 打赏
  • 举报
回复
稍微注意一点性能问题,不要将学校里感觉时髦的东西就一定疯狂使用。
emailtome 2013-12-24
  • 打赏
  • 举报
回复
string.Join(" ", from s in "a b c d f g" where s != 0x20 select s);
youzelin 2013-12-24
  • 打赏
  • 举报
回复
引用 1 楼 yyantifa 的回复:
正则表达式 s=Regex.Replace(s, @"\s+", " ");
不能用 \s,因为之中包含了回车、Tab等,所以只能用 “ +”
  • 打赏
  • 举报
回复
正则表达式应该是最好的
十八道胡同 2013-12-24
  • 打赏
  • 举报
回复
方法有很多种,最简单的暴力法,从前往后搜索字符串,如果有2个紧挨着的空格,那么保留一个 当然了,用正则也是可以的
  • 打赏
  • 举报
回复
s是大写的: string.Join(" ", s.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries));
  • 打赏
  • 举报
回复
你可以重新创造一下这个字符串
string.Join(" ", s.split(new char[]{' '},StringSplitOptions.RemoveEmptyEntries));
jiaoshiyao 2013-12-24
  • 打赏
  • 举报
回复
//原始字符串 string s="a b c d f g"; s = s.Trim(); string resString = ""; for(int i = 1 ; i < s.Length;i++){ if(s[i]==" "&& s[i-1]==" ")continue; resString+=s[i].ToString(); } s=resString; 纠正 少了个空格
jiaoshiyao 2013-12-24
  • 打赏
  • 举报
回复
我在学校的时候老师也让我做过这个算法题 当时我这么做的

//原始字符串
  string s="a b  c   d    f g";
  s = s.Trim();
  string resString = "";
  for(int i = 1 ; i < s.Length;i++){
     if(s[i]==" "&& s[i-1]=="")continue;
     resString+=s[i].ToString();
  }
  s=resString;
本拉灯 2013-12-24
  • 打赏
  • 举报
回复

string s = "a b  c   d    f g";
s = string.Join(" ", s.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries));
熙风 2013-12-24
  • 打赏
  • 举报
回复
Str= Regex.Replace(Str.Trim(), "\\s+", " ");
bdmh 2013-12-24
  • 打赏
  • 举报
回复

            string source = "a b  c   d    f g";
            string patten = @"(?is)(?<=[\s])[\s]+";
            Regex reg = new Regex(patten);
            source = reg.Replace(source, "");
yyantifa 2013-12-24
  • 打赏
  • 举报
回复
正则表达式 s=Regex.Replace(s, @"\s+", " ");

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧