首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 求个去掉重复空格的方法 [已结帖,结帖人:caibird1984]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • caibird1984
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 结帖率:
    发表于:2008-11-06 19:04:05 楼主
    需要从文本文件中逐行读取数据。多数情况下读取出的数据中包含重复的空格,如:“张三    30    男    汉族”,需要转换成“张三 30 男 汉族”的形式以进行下面的操作。请教是否有高效的方法?
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • takako_mu
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-06 19:08:391楼 得分:0
    replace(" ","")可以么:)
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • sp1234
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-06 19:18:192楼 得分:10
    C# code
    string s = "a b c"; string[] x = s.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); string y = string.Join(" ", x);
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • shadowjl
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-06 19:27:253楼 得分:0
    楼上的行,偶像啊
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • maco_wang
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-06 19:28:344楼 得分:0
    如果是字符串1,2,3,4 按‘,’可以分出1 2 3 4 这个楼主清楚吧?
    你问的问题,可以把“张三    30    男    汉族”按' '分割,然后分割后非空格元素用空格连起来!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • kfps8kfps8
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-06 20:01:155楼 得分:0
    mark
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • takeshe
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-06 20:21:326楼 得分:0
    引用 2 楼 sp1234 的回复:
    C# code            string s = "a  b c";
                string[] x = s.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                string y = string.Join(" ", x);


    不错~一直觉得2楼回答的问题都很好~
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Fibona
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-06 20:23:227楼 得分:0
    引用 2 楼 sp1234 的回复:
    C# code            string s = "a  b c";
                string[] x = s.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                string y = string.Join(" ", x);


    先分隔再连接
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • gengwanshanreally
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-06 23:24:028楼 得分:0
    顶2楼的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • iuhxq
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-06 23:25:129楼 得分:0
    replace("  "," ")
    试试这个?把两个空格替换成1个空格。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Silver_1987
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-07 00:05:1310楼 得分:0
    学习了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • root_
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-07 00:25:5011楼 得分:4
    C# code
    string test = "张三 30 男   汉  族"; test = System.Text.RegularExpressions.Regex.Replace(test, @"[  ]+", " ");
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • CodeShow
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-07 08:51:1112楼 得分:0
    trim
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • tpu01yzx
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-07 08:54:4813楼 得分:0
    试试这个\s代表空格或者Tab之类的分隔符,有两个或者两个以上就替换为一个空格
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jiang_jiajia10
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-07 08:57:4214楼 得分:0
    引用 2 楼 sp1234 的回复:
    C# code            string s = "a  b c";
                string[] x = s.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                string y = string.Join(" ", x);

    高人
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • huwei001982
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-07 09:12:2115楼 得分:0
    用正则更好
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lfywy
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-07 09:23:3416楼 得分:3
    2楼的不错
    string s = "a  b c";
                string[] x = s.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                string y = string.Join(" ", x);

    但是9,11楼的也行啊
    replace("  "," ")
    试试这个?把两个空格替换成1个空格。

    string test = "张三    30    男    汉  族";
    test = System.Text.RegularExpressions.Regex.Replace(test, @"[  ]+", " ");
    楼主去选择吧
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • q704174307
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-07 09:27:3217楼 得分:0
    引用 9 楼 iuhxq 的回复:
    replace("  "," ")
    试试这个?把两个空格替换成1个空格。

    这个不行,这样会把所有空格都弄没了的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Hesperus
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-07 10:03:1918楼 得分:0
    高人啊
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ppp7p
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-07 10:07:5019楼 得分:0
    C# code
    string test = "张三 30 男   汉  族"; string s = Regex.Replace(test, @"\s", string.Empty); Response.Write(s);
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Leo_0924
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-07 10:09:0220楼 得分:0

    C# code
    //高 实在是高 二楼 我爱你 //高 实在是高 二楼 我爱你 //高 实在是高 二楼 我爱你 //高 实在是高 二楼 我爱你 string s = "a b c"; string[] x = s.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); string y = string.Join(" ", x);
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lengyue110
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-07 10:27:4721楼 得分:0
    直接在文本中去掉空格不行么?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • clear_shadow
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-07 10:32:1122楼 得分:0
    引用 2 楼 sp1234 的回复:
    C# code            string s = "a  b c";
                string[] x = s.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                string y = string.Join(" ", x);


    正解,学习了~
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wackyboy
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-07 10:38:4423楼 得分:0
    C# code
    string test = "张三 30 男   汉  族"; string s = Regex.Replace(test, @"\s", " ");
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wackyboy
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-07 10:42:0024楼 得分:0
    引用 23 楼 wackyboy 的回复:
    C# code
    string test = "张三    30    男    汉  族";
    string s = Regex.Replace(test, @"\s", " ");

    这是错误的 大意了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • baby_cz
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-07 10:52:1225楼 得分:0
    一直觉得6楼的头像怕怕滴地说~~~
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wackyboy
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-07 10:53:2126楼 得分:3
    C# code
    string test = "张三 30 男   汉  族"; string s = Regex.Replace(test, @"\s{2,}", " ");
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • caibird1984
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-08 09:48:5727楼 得分:0
    sp1234前辈每次的见解都让小弟受益匪浅,非常感谢!

    其实小弟目前用的方法就是把字符串按" "分组,之后去掉等于“”的元素,再重新连接。只不过觉得这样做效率太低,需要占用一个字符串数组(而且可能数组长度还不小),连起来之后还得再额外占用一个字符串变量(因为需要把结果保存回字符串中),所以想求一个高效点的方法。

    无奈小弟正则不熟,所以不敢轻易用。不过目前小弟找到答案了,十分感谢各位支招的哥哥姐姐们。结帖
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • caibird1984
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-08 09:50:3128楼 得分:0
    哦另外,直接Replace("  ", " ")能将两个空格变成一个,但是似乎对于三、四个空格的情况似乎还是会有连续的空格,所以恐怕直接Replace比较困难,至少可能需要做个循环什么的。
    修改 删除 举报 引用 回复