英文语句处理(空格处理)
生活随笔
收集整理的這篇文章主要介紹了
英文语句处理(空格处理)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
要求:去除句子句首句尾的空格,單詞間的空格若連續出現多個,只保留一個
注釋:兩種方法實現了。第一種方法比較水,參照之前寫的把句子中的空格轉換為“%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 算法(树的两个节点的最低