C語言,Visual FoxPro,宏代換函式,求字元串長度函式,求子串位置函式,取子串函式,刪除字元串前後空格函式,生成空格函式,字元串替換函式,產生重複字元函式,大小寫字母轉換函式,計算字串出現次數函式,字元串匹配函式,Linux,
C語言
在實際
編程中常需要對個別字元進行處理,C語言也提供了字元
函式。這些函式不能被套用於整個字元串,但可以被套用於字元串中的個別字元。表中羅列了幾個最常用且有用的字元函式,使用這些函式必須包含
頭檔案“ctype.h”。
函式名 | 為如下參數時,返回值為真, 否則為零 |
---|
isalpha() | 字母 |
isblank() | 標準的空白字元(空格、換行或水平制表符)或任何其他預定義指定為空白符的字元 |
isdigit() | 阿拉伯數字 |
islower() | 小寫字母 |
isupper() | 大寫字母 |
isspace() | 空白字元:空格、換行、走紙、回車、垂直制表符、水平制表符或任何其他預定義指定的字元 |
| |
---|
tolower() | 若參數是大寫字母,返回相應的小寫字母,否則返回原始參數 |
toupper() | 若參數是小寫字母,返回相應的大寫字母,否則返回原始參數 |
Visual FoxPro
宏代換函式
格式如下:
&<字元型記憶體變數>[.字元表達式]
功能:一是替換字元型
記憶體變數的值,二是將數值型字元轉換為數值型數據。如果該函式與其後的字元無明確分界,則要用“.”作為函式結束標識。
例
C2=”Computer”
C1="2"
C=”c&c1’’
?&C1.2*3,&C
輸出的結果為:66 Computer
求字元串長度函式
格式如下:
功能:求
字元串的長度,即所包含的字元個數。若是空串,則長度為0。函式值為數值型。
例
?LEN(”計算機學院”),LEN(”我 要 學 習”)
螢幕顯示的結果為:10 11(注意”我 要 學 習”,每個字中間都有一個空格)
求子串位置函式
格式如下:
AT(<字元型表達式1>,<字元型表達式2>)
ATC(<字元型表達式1>,<字元型表達式2>)
功能:若<字元型表達式1>的值存在於<字元型表達式2>的值中,則給出<字元型表達式1>在<字元型表達式2>中的開始位置,若不存在,則函式值為0。函式值為數值型。ATC函式在子串比較時不區分字母大小寫。
例
?AT(”345”,”123456”),AT(”5”,”12367”)
?AT(”abc”,”ABCDE abcde”),AT(”abc”,”ABDCE abdce”)
輸出的值為:3 0
7 0
取子串函式
格式如下:
LEFT(<字元型表達式>,<數值型表達式>)
RIGHT(<字元型表達式>,<數值型表達式>)
SUBSTR(<字元型表達式>,<數值型表達式1>[,<數值型表達式2>])
功能:
LEFT函式從字元型表達式左邊的第一個字元開始截取子串,
RIGHT函式從字元型表達式右邊的第一個字元開始截取子串。若數值型表達式的值大於0,且小於等於字元串的長度,則子串的長度與數值型表達式值相同。若數值型表達式的值大於字元串的長度,則給出整個字元串。若數值型的表達式小於或等於0,則給出一個空字元串。
SUBSTR函式對字元型表達式從指定位置開始截取若干個字元。起始位置和字元個數分別由數值型表達式1和數值型表達式2決定。若字元個數省略,或字元個數多於從起始位置到原字元串尾部的字元個數,則取從起始位置起,一直到字元串尾的字元串作為函式值。若起始位置或字元個數為0,則函式值為空串。顯然SUBSTR函式可以代替LEFT函式和RIGHT函式的功能。
例
STORE”GOOD BYE!”TO X
?LEFT(x,2),SUBSTR(x,6,2),SUBSTR(x,6),RIGHT(x,3)
輸出的函式值為:GO BY BYE! YE!
刪除字元串前後空格函式
格式如下:
LTRIM(<字元型表達式>)
RTRIM(<字元型表達式>)
ALLTRIM(<字元型表達式>)
功能:
LTRIM刪除字元串的前導空格。
RTRIM刪除字元串的尾部空格。RTRIM也可寫成TRIM。
ALLTRIM刪除字元串中的前導和尾部空格。ALLTRIM函式兼有LTRIM和RTRIM函式的功能。
例
STORE SPACE(2)+”TEST”+SPACE(3) TO SS &&SPACE()為產生空格函式
?TRIM(SS)+LTRIM(SS)+ALLTRIM(SS)
?LEN(SS),LEN(TRIM(SS)),LEN(LTRIM(SS)),LEN(ALLTRIM(SS))
輸出的結果為:
TESTTEST TEST
9 6 7 4
生成空格函式
格式如下:
SPACX(<數值型表達式>)
功能:生成若干個空格,空格的個數由數值型表達式的值決定。
例
name=SPACE(8)&&等效為變數name為字元型變數,變數值為8個空格
?LEN(LTRIM(name))
&&先用函式LTRIM()刪除了變數NAME的空格,再求該函式的長度,故螢幕輸出的值為0
字元串替換函式
格式如下:
STUFF(<字元型表達式1>,<數值型表達式1>,<數值表達式2>,<字元型表達式2>)
功能:用<字元型表達式2>去替換<字元型表達式1>中由起始位置開始所指定的若干個字元。起始位置和字元個數分別由數值型表達式1和數值型表達式2指定。如果字元型表達式2的值是空串,則字元型表達式1中由起始位置開始所指定的若干個字元被刪除。
例
STORE’中國重慶’ TO x
?STUFF(x,6,4,’北京’),STUFF(X,5,0,”北京”),STUFF(X,5,10,”北京”)
螢幕輸出為:中國 北京 中國北京 重慶 中國北京
產生重複字元函式
格式如下:
功能:重複給定字元串若干次,次數由數值型表達式給定。
例
?REPLICATE(‘*’,6) &&螢幕輸出為:******
大小寫字母轉換函式
格式如下:
功能:LOWER將字元串中的大寫字母轉換成小寫。
UPPER將字元串中的小寫字母轉換成大寫。
例
a =”ABcd’’
?UPPER(a),LOWER(“a”)
輸出的函式值為:ABCD abcd
在字元串中,同一字母的大小寫為不同字元,如果利用大小字母轉換函式,就可以不考慮字元串中的字母是大寫還是小寫。
計算字串出現次數函式
格式如下:
OCCURS(<宇符型表達式1>,<字元型表達式2>)
功能:OCCURS()函式返回第一個字元串在第二個字元串中出現的次數,如果第一個字元串不是第二個字元串的子串,則函式值為0。
例
?OCCURS(”R”,”PRTOUTR”) &&輸出的結果為:2
字元串匹配函式
格式如下:
LIKE(<字元型表達式1>,<字元型表達式2>)
功能:LIKE()函式比較兩個字元串對應位置上的字元,如果所有對應字元都匹配,函式返回邏輯值(.T.),否則返回邏輯值(.F.)。
例
?LIKE(”XY*”,”XYZ”)
輸出的結果為:.T.
Linux
字元調試函式如下:
函式名 | 功能 |
---|
isalnum | 測試字元是否為英文或數字 |
isalpha | 測試字元是否為英文字母 |
isascii | 測試字元是否為ASCII碼字元 |
isentrl | 測試字元是否為ASCII碼的控制字元 |
isdigit | 測試字元是否為阿拉伯數字 |
islower | 測試字元是否為小寫字母 |
isprint | 測試字元是否為可列印字元 |
isspace | 測試字元是否為空格字元 |
ispunct | 測試字元是否為標點符號或特殊符號 |
isupper | 測試字元是否為大寫英文字母 |
isxdigit | 測試字元是否為十六進制數字 |
例:從鍵盤讀入一行字元,測試讀入字元是否為大寫字元。
操作步驟
[root@localhost root]#vim 4-4.c
程式代碼如下:
#include”stdio.h”
#include<ctype.h>
main()
{
char c;
while((c=getchar())!=飛Ir)
if(isupper(c))
printf(”%c is an uppercase character\n”,c);
}
接著用gcc的“一o”參數,將4—4.C程式編譯成執行檔4—4,輸入如下:
[root@localhost root]#gce 4-4.c —O 4-4
編譯成功後,執行執行檔4—4,輸入字元串“f956GFyffUTR57”,此時系統會出現運行
結果,終端中的顯示如下:
[root@localhost root]#./4—4
f956GFyffUTR57
G is an uppercase character
F is an uppercase character
U is an uppercase character
T is an uppercase character
R is an uppercase character