免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 5470 | 回复: 20
打印 上一主题 下一主题

想删除一个string中的所有大于两格的空格字串 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-05-17 12:31 |只看该作者 |倒序浏览
一格的可以认为是正常的,而两格以上被认为是不正确的,如:
</s>;
          </s>;</!>;还有</s>;     <!>;d

该如何做呢

论坛徽章:
0
2 [报告]
发表于 2004-05-17 13:20 |只看该作者

想删除一个string中的所有大于两格的空格字串

  1. #include <stdio.h>;
  2. #include <stdlib.h>;
  3. #include <string.h>;

  4. ///////////////////////////////////////////////////////////////////////////////
  5. // 功能说明 : 过滤字符串中多个空格 转成一个空格
  6. // 输入参数 : szBuff
  7. //          : nLen
  8. // 输出参数 : nLen
  9. // 返回值   : void
  10. // 使用说明 :
  11. ///////////////////////////////////////////////////////////////////////////////
  12. void FilterBuffer(char *szBuff, int &nLen)
  13. {
  14.    int Count = 0;
  15.    unsigned char ch = 0;                       
  16.    
  17.    for(int i = 0; i < nLen; i ++)
  18.    {
  19.       ch = ( unsigned char )szBuff[i];
  20.                 if ( (ch == ' ')
  21.                                  && ( szBuff[i+1] == ' ' ) )
  22.             continue;
  23.          else
  24.             szBuff[Count ++] = szBuff[i];
  25.         }
  26.    
  27.    nLen = Count;
  28.    szBuff[nLen] = '\0';                                                       
  29. }

  30. int main ( int argc, char*argv[] )
  31. {
  32.         char sz[20+1] = "ff   ff  ff";
  33.         int len = strlen(sz);
  34.         FilterBuffer( sz, len );
  35.         printf ( "%s", sz );
  36.         return 0;
  37. }
复制代码


仓促改了个,你自己改进看看.

论坛徽章:
0
3 [报告]
发表于 2004-05-17 13:32 |只看该作者

想删除一个string中的所有大于两格的空格字串

还要把string转化为char*来处理啊,有没有可以用STL方法就处理的,还有一个进一步的问题,如果把一个文本加载为string,这个文本里可能有一些不可见字符,转为string就表现为空格,其实未必是真的空格(我也不清楚),一个空格的可以认为是正常的空格,而两个以上的空格就是有不可见字符或者是空格过长,这种情况都是要删除的。如果是这样怎么处理?

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
4 [报告]
发表于 2004-05-17 13:37 |只看该作者

想删除一个string中的所有大于两格的空格字串

[quote]原帖由 "jerryzheng"]这个文本里可能有一些不可见字符,转为string就表现为空格,其实未必是真的空格[/quote 发表:

不可能,没有的事。

小伙子你学电脑多久了啊?怎么到现在还连“屏幕上显示的内容和内存中有什么区别”都搞不清楚啊?

论坛徽章:
0
5 [报告]
发表于 2004-05-17 13:46 |只看该作者

想删除一个string中的所有大于两格的空格字串

[quote]原帖由 "jerryzheng"]还要把string转化为char*来处理啊,有没有可以用STL方法就处理的,还有一个进一步的问题,如果把一个文本加载为string,这个文本里可能有一些不可见字符,转为string就表现为空格,其实未必是真的空格(我也不清楚)..........[/quote 发表:

1.你够懒的,自己去扩充下我的函数,这么懒没法搞计算机.
2.不可见字符不等于没有字符也不等于空白字符.

论坛徽章:
0
6 [报告]
发表于 2004-05-17 13:50 |只看该作者

想删除一个string中的所有大于两格的空格字串

我说了我也不清楚会不会显示为空格啊,就算这个我说错了,又有什么关系呢?人有所长也各有所短,你就保证基础的东西你都100分啊,如果被我撞见了我也可以说“小伙子,学电脑多久了”呵呵,不懂就问, 没什么丢人的

论坛徽章:
0
7 [报告]
发表于 2004-05-17 13:51 |只看该作者

想删除一个string中的所有大于两格的空格字串

我还是希望有懂STL的来用STL的方法来解决问题,如果要用你的方法也不是不好,但我还有简单的

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
8 [报告]
发表于 2004-05-17 13:57 |只看该作者

想删除一个string中的所有大于两格的空格字串

我只是想告诉你,
“显示为空白”和“空格”是两个概念。

你首先要搞清楚你想要干什么。
否则别人怎么帮你?

如果只是想“去掉多余的空格”的话,二楼给的程序已经足够了。
你说“进一步的问题”,可是进一步的问题是什么啊?必须定性。

计算机的基础是“离散数学”,
属于模糊数学范畴的东西,不适合用计算机去解决。

比如说“好像”啊、“未必”啊、“不清楚”啊、等等的字眼,都不能准确的说明问题。

论坛徽章:
0
9 [报告]
发表于 2004-05-17 14:03 |只看该作者

想删除一个string中的所有大于两格的空格字串

不光是想去掉多余的空格,包括想去掉显示为空白的部分

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
10 [报告]
发表于 2004-05-17 14:08 |只看该作者

想删除一个string中的所有大于两格的空格字串

[quote]原帖由 "jerryzheng"]不光是想去掉多余的空格,包括想去掉显示为空白的部分[/quote 发表:

什么叫“显示为空白的部分”?
不同的操作系统、不同的浏览器、不同的编辑器、不同的终端下面,“显示为空白的字符”的集合都是不同的。

另外,顺便说一声,
如果你的文件中有不可见字符,
那么,
从严格意义上来讲,你的文件就不是“文本文件”。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP