c/c++ 刪除字符串中的空格的方法


編制一個字符串整理函數ver(char *),實現將已知字符串s中的前導空白符和尾隨的空白類字符去掉,並將字符串非空白類字符之間的連續多個空白類字符縮減爲一個

對于本題,還可以設置狀態進行處理,開始時讓flg爲0,表示程序將遇到的空白類符是字符串的前導空白符;flg爲1表示在複制過程中遇到了一個中間空白類字符;

flg爲2表示一個空白符字符已經處理結束.

1 char *ver(char *s)
2 {
3 int flg=0;
4 char *p=s,*q=s;
5 for (;*s;s++) { /*順序訪問字符串s中的每個字符*/
6 if (*s==' ' || *s=='t' || *s=='n') /*遇空白類字符*/
7 flg=(flg==2)?1:flg;
8 else {
9 if (flg==1)
10 *q++=' '; /*遇到空白類字符,複制下一個空白符*/
11 *q++=*s; /*複制當前字符*/
12 flag=2; /*一個中間空白符列處理結束*/
13 }
14 }
15 *q='';
16 return p;
17 }

網上找的另一方法

string ls_string,ls_string_before,ls_string_after

integer li_tab,li_blank,li_blank_dbcs

ls_string = trim(sle_1.text)

//PB在處理TAB字符不分全角和半角,只用POS就可以,不用POSW

li_tab = Pos(ls_string, "~t")

DO WHILE li_tab > 0

ls_string_before = Mid(ls_string,1,li_tab - 1)

ls_string_after = Mid(ls_string,li_tab + 1)

ls_string = ls_string_before + ls_string_after

SetNull(li_tab)

li_tab = Pos(ls_string, "~t")

LOOP

//刪除半角空格

li_blank = pos(ls_string ,' ')

DO WHILE li_blank > 0

ls_string_before = Mid(ls_string,1,li_blank - 1)

ls_string_after = Mid(ls_string,li_blank + 1)

ls_string = ls_string_before + ls_string_after

SetNull(li_blank)

li_blank = pos(ls_string ,' ')

LOOP

//刪除全角空格

li_blank_dbcs = PosW(ls_string,' ')

DO WHILE li_blank_dbcs > 0

ls_string_before = MidW(ls_string,1,li_blank_dbcs - 1)

ls_string_after = MidW(ls_string,li_blank_dbcs + 1)

ls_string = ls_string_before + ls_string_after

SetNull(li_blank_dbcs)

li_blank_dbcs = PosW(ls_string,' ')

LOOP

方法四

#include<stdio.h>
#include<string.h>
#include<iostream.h>
#include<math.h >
void fun(char *str);

int main()
{
char str[8]="a bcd";
fun(str);
cout<<str<<endl;
return 0;
}
void fun(char *str)
{
int i, n=strlen(str);
cout<<n<<endl;
char *p=str;
for(i=0;i<n;)
{
if(*p!=' ')
str[i++] = *p;
p++;
}
str[i]='';
}

實例

char *ver(char *s)
{ char *p=s,*q=s;
/*掠過前導空白符*/
for (;*s==' ' || *s=='t' || *s=='n';s++);
for (;*s;) { /*順序訪問字符串s中的每個字符*/
*q++=(*s=='t' || *s=='n')?' ':*s;
if (*s!=' ' && *s!='t' && *s!='n') s++;
else
while (*s!=' ' || *s=='t' || *s=='n') s++;
}
if (q>p && *(q-1)== ' ') /*如q>p,則已複制過非空白字符*/
*(q-1)=''; /*如最後複制的是空白符,將其改爲字符串結束符*/
else
*q=''; /*否則添加字符串結束符*/
return p;
}

更多相關文章
  • 如果你是驗證郵箱第一個不錯,如果你要獲取文章或字符串中是否有郵箱地址,可以用第二個.*/function funcemail($str)//郵箱正則表達式{ return (preg_match('/^[_.0-9a
  • 下面我們一起來看一篇關于C++中SWIFT 去除字符串首尾的空格,以及指定字符串程序的例子,希望例子能夠對各位同學帶來幫助.@import url/CuteSoft_Client/CuteEditor/Load.as
  • 我們利用這兩個函數來刪除字符串最後一個字符是有說法的,rtrim他有默認刪除空格和一些特殊字符,但你也可以刪除指定字符,頁substr我們是取字符長度,自然只要取字符長度減一就行了如下實例.*/$str ='abce
  • remove 刪除字符串中指定位置的字符串片段 第一參數是位置 第2個參數是長度 代碼如下 string str = "0123456789"; Console.WriteLine(str.Remove(5)); C
  • php正則匹配字符串中js文件例子
    正則匹配可能通過一些通配符來獲得有規則的數據了,我們下文來爲各位介紹一個php正則匹配字符串中js文件例子,具體的例子如下圖所示.將一個網頁裏面所有引入的js文件都匹配出來,在php中用正則表達式來實現,方式如下:<?php header("Content-type:text/htm ...
  • php利用preg_match_all()正則獲取字符串中指定參數鏈接地址很簡單的,我們只要配合正則規則就可以實現了我們想要的結果了,下面看一個例子,非常的簡單.程序代碼<?php $html = <<<HTML <
  • 我們要獲取字符串中圖片地址需要使用preg_match_all正則表達式來獲取,替換獲取到的內容使用str_replace函數即可了,下面我們看個實例.例 代碼如下 function repalceTA($str){
  • 本文章提供了三款利用asp的正則獲取字符串中url地址自定義函數哦,三個方法的實現原理都是獲取以http開的url地址哦.on error goto z'dim url,key,wwwname url=request.servervariables("server_name") ...
  • indexOf 查找指定的字符串在字符串中得位置,第一個參數是要查找的字符串 第2個參數起始位置查找字串中指定字符或字串首次出現的位置,返首索引值,如: 代碼如下 str1.IndexOf("字"): //查找"字"在str1中的索引值(位置) str1.In ...
一周排行