当前位置:
首页 >
英文语句处理(空格处理)
发布时间:2025/10/17
33
豆豆
生活随笔
收集整理的这篇文章主要介绍了
英文语句处理(空格处理)
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
要求:去除句子句首句尾的空格,单词间的空格若连续出现多个,只保留一个
注释:两种方法实现了。第一种方法比较水,参照之前写的把句子中的空格转换为“%20”那道题,硬是调用自带的函数,能实现,但感觉略复杂化了,就不多说了
第二种方法,逐个读取字符串里的字符,逐个判断,简单易懂,先去除句首句尾空格,缩小范围,再在这个小范围里逐个判断,实现
#include <stdio.h> #include <string> #include <string.h> #include <iostream>using namespace std;char* formatString1(char* sourceString){int length1 = strlen(sourceString);int length2 = 0;if(length1==0)return '\0';char space[]= " "; char final[256];char *p;int cnt=0;//句首处理p=sourceString;while(*p == ' ')p++;strcpy(sourceString,p);length1 = strlen(sourceString);while(strstr(sourceString,space)!=NULL){p=strstr(sourceString,space);length2=strlen(p);memcpy(&final,sourceString,(length1-length2));final[(length1-length2)]='\0';p++;p++;while( *p == ' '){cnt++;//计空格数p++;}--p;//留一个空格strcat(final,p);length1=length1-(cnt+1);cnt=0;strcpy(sourceString,final);}//句尾处理length1 = strlen(sourceString);p=&sourceString[length1-1];while(*p == ' '){p--;cnt++;}sourceString[length1-cnt]='\0';return sourceString; }char* formatString2(char* sourceString){int length=strlen(sourceString);if(length==0)return "";int start=0,end=length-1;while(sourceString[start] == ' ')//句首start++;while(sourceString[end] == ' ')//句尾end--;char str[256];int pos=0;for(int i=start;i<=end;i++){if(sourceString[i] != ' ')str[pos++]=sourceString[i];else if(sourceString[i] == ' ' && sourceString[i-1] == ' ')//多个空格{str[pos++]=' ';while(sourceString[i] == ' ')i++;i--;//while循环里还要加一次}else if(sourceString[i] == ' ' && sourceString[i+1] != ' ')//单独一个空格str[pos++]=' ';}str[pos]='\0';return str; }int main() {char str[]= " I love meituan ";char *p=formatString2(str);printf("%s//over\r\n",p); }总结
以上是生活随笔为你收集整理的英文语句处理(空格处理)的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 格雷码实现
- 下一篇: 剑指offer 算法(树的两个节点的最低