社区
C语言
帖子详情
50分求教去掉字符串前后空格的问题。
kouken
2003-10-15 03:07:40
如何截掉一个全角字符和半角字符混排的字符串的前后空格?
...全文
424
21
打赏
收藏
50分求教去掉字符串前后空格的问题。
如何截掉一个全角字符和半角字符混排的字符串的前后空格?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
21 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
kouken
2003-10-23
打赏
举报
回复
不好意思,给点分数大家意思意思,接分
busybird
2003-10-22
打赏
举报
回复
trim函数
River_H
2003-10-22
打赏
举报
回复
修正上面代码的一些小问题。经过测试的代码如下:
void DoIt(char *pString)
{
int nIsSpace, nCount;
unsigned char* pWork;
if (pString == NULL || pString[0] == 0)
{
return;
}
// 第一遍去掉后面的空格,第二遍去掉前面的空格
for (nCount = 0; nCount < 2; nCount++)
{
// 将字符串反转
pString = strrev(pString);
pWork = (unsigned char*)pString;
// 去掉前面的空格
do
{
// 结束
if (*pWork == 0)
{
nIsSpace = 0;
}
// 全角空格
else if (*pWork == 0xa1)
{
if (*(pWork+1) == 0)
{
nIsSpace = 0;
}
else if (*(pWork+1)== 0xa1)
{
nIsSpace = 1;
pWork += 2;
}
}
// 半角空格
else
{
if (*pWork == 0x20)
{
nIsSpace = 1;
pWork += 1;
}
else
nIsSpace = 0;
}
} while (nIsSpace == 1);
//
if (pWork != (unsigned char*)pString)
{
strcpy(pString, (char*)pWork);
}
}
}
River_H
2003-10-22
打赏
举报
回复
还没有搞定?给你写一个函数。如下:
void DoIt(char *pString)
{
int nIsSpace,nCount;
unsigned char* pWork;
if (pString == NULL || pString[0] == 0)
{
return;
}
// 第一遍去掉后面的空格,第二遍去掉前面的空格
for (nCount = 0; nCount < 2; nCount++)
{
// 将字符串反转
pString = strrev(pString);
pWork = pString;
// 去掉前面的空格
do
{
// 结束
if (*pWork == 0)
{
nIsSpace = 0;
}
// 全角空格
else if (*pWork == 0xa1)
{
if (*(pWork+1) == 0)
{
nIsSpace = 0;
}
else if (*(pWork+1)== 0xa1)
{
nIsSpace = 1;
pWork += 2;
}
}
// 半角空格
else
{
if (*pWork == 0x20)
nIsSpace = 1;
else
nIsSpace = 0;
pWork += 1;
}
} while (nIsSpace == 1);
//
if (pWork != pString)
{
strcpy(pString, pWork);
}
}
}
minghui000
2003-10-15
打赏
举报
回复
iswspace()
isspace()
smokefire
2003-10-15
打赏
举报
回复
用iswspace()和isspace()判断看看
kouken
2003-10-15
打赏
举报
回复
不晕
因为s[i]永远不会等于全角的空格,不相信你试试,当全角空格和
半角空格同时存在时光用s[i] != ' '和s[i] != ' '是解决不了问题的,
当全角空格和半角空格同时存在时问题的关键是怎样去区分全角空格和半角空格
smokefire
2003-10-15
打赏
举报
回复
s[i] != ' '
你把' '和' '都考虑进去不就玩了?
晕
kouken
2003-10-15
打赏
举报
回复
Tangyongkang(匆匆)
你只能去掉半角空格,我说的全角半角混排当然也有全角空格和半角空格咯
smokefire
2003-10-15
打赏
举报
回复
isspace函数应该有全角的版本阿 你去找找
lyr311
2003-10-15
打赏
举报
回复
Mark!
Tangyongkang
2003-10-15
打赏
举报
回复
// Let Me Try
// By C
char *Trim(char *s)
{
int i,j;
'去掉后面的空格
for ( j = strlen(s); s[j] != ' ' ; j--)
;
s[j] = '\0';
'去掉前面的空格
for ( i = 0 ; s[i] != ' ' ; i++);
s = &s[i];
return s
}//End
}
kouken
2003-10-15
打赏
举报
回复
如果只有全角或只有半角会比较好办一点,但是混排的话,我不知道如何判断哪个字符要占两个字节,哪个字符只占一个字节
kouken
2003-10-15
打赏
举报
回复
我用的标准C
AManWanttoMarriage
2003-10-15
打赏
举报
回复
你使用的是String类吗?它里面有很多函数(接口),利用这些接口编一个函数就好了,如find(),mid()start()end()之类
smokefire
2003-10-15
打赏
举报
回复
这个没有考虑全角,但是应该好办吧
smokefire
2003-10-15
打赏
举报
回复
//去除后置空格函数
void strclearb(char *str)
{
while(isspace(str[strlen(str)-1]))
{
str[strlen(str)-1]=0;
}
}
//字符串倒装函数
void strbtof(char *str)
{
char tmpc ;
int j=strlen(str);
for(int i=0;i<j/2;i++)
{
tmpc=str[i];
str[i]=str[j-i-1];
str[j-i-1]=tmpc;
}
}
//去除前面空格函数
void strclearf(char *str)
{
strbtof(str);
strclearb(str);
strbtof(str);
}
langzi8818
2003-10-15
打赏
举报
回复
upxia
davidwoo
2003-10-15
打赏
举报
回复
循环去掉'\0'后的所有内容
Wolf0403
2003-10-15
打赏
举报
回复
全角字符的空格不是 '\20' 吗?偶不知道的说~
加载更多回复(1)
字符编码
平时在编辑的时候经常遇到一些编码的
问题
,出现乱码了就调整一下字符编码就没有
问题
了。最近做了recovery界面的汉化工作,对字符编码的
问题
有了更深入的了解。在网上搜集了很多资料,原始地址已经忘了,下面的大...
JS正则表达式【1】
经典JavaScript正则表达式实战 1、匹配结尾的数字 来源:如何用 JAVASCRIPT 正则表达式...
字符串
内字符键有
空格
,但是
空格
的数量可能不一致,通过正则将
空格
的个数统一变为一个。 例如:蓝 色 理 想 变成:蓝 色 理 ...
正则表达式(二)
看了正则表达式(一) 感觉实在是太复杂了,索性就将常用的js正则表达式进行下整理。 匹配结尾的数字 来源:如何用JAVASCRIPT 正则...
字符串
内字符键有
空格
,但是
空格
的数量可能不一致,通过正则将
空格
的个数统一
js正则表达式实例(汇总)
匹配结尾的数字 来源:如何用JAVASCRIPT 正则表达式取出
字符串
最后一组数字,谢谢 ...
字符串
内字符键有
空格
,但是
空格
的数量可能不一致,通过正则将
空格
的个数统一变为一个。 例如:蓝色理想 变成:蓝色理想
经典JavaScript正则表达式实战
匹配结尾的数字 来源:如何用 javascript 正则表达式 取出
字符串
最后一组数字,谢谢 ...
字符串
内字符键有
空格
,但是
空格
的数量可能不一致,通过正则将
空格
的个数统一变为一个。 例如:蓝 色 理 想 变成:蓝 色
C语言
69,335
社区成员
243,078
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章