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 ...
一周排行
  • 這個東西其實我們開發人員來講常用了,以前做一個抓取其它網站友情連接時用過,今天看到一朋友整理了一個PHP獲取指定URL頁面中的所有鏈接函數,整理過來我們一起來看看吧.以下代碼可以獲取到指定URL頁面中的所有鏈接,即所 ...
  • 本文章來介紹在android開發中,我們通過button按鈕來動態改變字體大小.字體顔色.背景顔色代碼,有需要了解的朋友可參考參考.實現的邏輯:通過遍曆View的方式,判斷View是否是TextView.EditTe
  • html自定義文件上傳控件樣式input:file方法總結
    大家可能都知道在html中的input file文件上傳控制默認風格與樣式很難看了,下面我 ...
  • 在我們做前端時會碰到一個固定的寬度當文字超過我們這個固定寬度時我們不換行的同時希望文字隱藏了,那我們通常會使用overflow:hidden來隱藏文字,但是發現在ie6,ie7下overflow:hidden無效了, ...
  • 下面我們來看看php pdo_mysql連接報錯Connection failed: SQLSTATE[HY000] [2002] No such file or directory問題的解決辦法.錯誤Connect ...
  • 現在使用mysql數據庫的朋友越來越多了,有時我們需要把asp轉型爲php這樣就需要把sqlserver數據轉換成mysql數據庫了,經過查找發現mysql官方提供了專業的工作哦.利用官方工具操作1.安裝mysql數
  • 在mysql觸發器中不可以直接使用update進行數據更新操作了,這個不是mysql bug而官方說可能使用了update會導致死循環了,推薦我們直接使用new賦值變量了.mysql下insert和update觸發器
  • Windows 7 本地連接2無法修改名稱 有需要的朋友可參考一下.Pop:之前一台電腦不知道怎麽網卡都變成了“本地連接2”.想修改成“本地連接”直接改名成,結果發現提示:無法重命名該連接.具有指定名的連接已經存在.
  • iphone手機升級iOS 9後遇到的常見問題介紹
    iphone手機升級iOS 9後遇到的常見問題估計有很多了,今天我們一起來看小編整理的一篇
  • javascript正則去除html標簽非常的簡單直接替換以開始與結束的標簽就可以了,不過如果要做到更詳細我們還需要進行一些處理哦,下面看個例子.正則代碼去掉網頁中的所有的html標記: 代碼如下 string te