複製鏈接
請複製以下鏈接發送給好友

字符函數

鎖定
字符函數(character function)是處理字符型數據的函數,其自變量函數值中至少有一個是字符型數據
中文名
字符函數
外文名
character function
應用領域
計算機等
涉及編程語言
C語言,Linux等
操作對象
字符
屬    性
計算機函數

字符函數C語言

在實際編程中常需要對個別字符進行處理,C語言也提供了字符函數。這些函數不能被應用於整個字符串,但可以被應用於字符串中的個別字符。表中羅列了幾個最常用且有用的字符函數,使用這些函數必須包含頭文件“ctype.h”。 [1] 
ctype.h的字符判斷函數
  
函數名為如下參數時,返回值為真, 否則為零
isalpha()字母
isblank()標準的空白字符(空格、換行或水平製表符)或任何其他預定義指定為空白符的字符
isdigit()阿拉伯數字
islower()小寫字母
isupper()大寫字母
isspace()空白字符:空格、換行、走紙、回車、垂直製表符、水平製表符或任何其他預定義指定的字符
ctype.h的字符映射函數
tolower()若參數是大寫字母,返回相應的小寫字母,否則返回原始參數
toupper()若參數是小寫字母,返回相應的大寫字母,否則返回原始參數

字符函數Visual FoxPro

字符函數宏代換函數

格式如下: [2] 
&<字符型內存變量>[.字符表達式]
功能:一是替換字符型內存變量的值,二是將數值型字符轉換為數值型數據。如果該函數與其後的字符無明確分界,則要用“.”作為函數結束標識。
C2=”Computer”
C1="2"
C=”c&c1’’
?&C1.2*3,&C
輸出的結果為:66 Computer

字符函數求字符串長度函數

格式如下:
LEN(字符型表達式)
功能:求字符串的長度,即所包含的字符個數。若是空串,則長度為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(<字符型表達式>,<數值型表達式>)
功能:重複給定字符串若干次,次數由數值型表達式給定。
?REPLICATE(‘*’,6) &&屏幕輸出為:******

字符函數大小寫字母轉換函數

格式如下:
LOWER(<字符型表達式>)
UPPER(<字符型表達式>)
功能: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

字符調試函數如下: [3] 
字符調試函數
  
函數名功能
isalnum測試字符是否為英文或數字
isalpha測試字符是否為英文字母
isascii測試字符是否為ASCII碼字符
isentrl測試字符是否為ASCII碼的控制字符
isdigit測試字符是否為阿拉伯數字
islower測試字符是否為小寫字母
isprint測試字符是否為可打印字符
isspace測試字符是否為空格字符
ispunct測試字符是否為標點符號或特殊符號
isupper測試字符是否為大寫英文字母
isxdigit測試字符是否為十六進制數字
例:從鍵盤讀入一行字符,測試讀入字符是否為大寫字符。
操作步驟
步驟1編輯源程序代碼。
[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);
}
步驟2gcc編譯程序。
接着用gcc的“一o”參數,將4—4.C程序編譯成可執行文件4—4,輸入如下:
[root@localhost root]#gce 4-4.c —O 4-4
步驟3運行程序。
編譯成功後,執行可執行文件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
參考資料
  • 1.    周宇主編.C語言程序設計教程:東南大學出版社,2010.08:106
  • 2.    曾慶森,王豔等編著.Visual FoxPro程序設計:清華大學出版社,2013.02
  • 3.    嚴冰,劉加海,季江民主編.Linux程序設計:浙江大學出版社,2012.02:107