WIKI使用導(dǎo)航
站長(zhǎng)百科導(dǎo)航
站長(zhǎng)專題
- 網(wǎng)站推廣
- 網(wǎng)站程序
- 網(wǎng)站賺錢
- 虛擬主機(jī)
- cPanel
- 網(wǎng)址導(dǎo)航專題
- 云計(jì)算
- 微博營(yíng)銷
- 虛擬主機(jī)管理系統(tǒng)
- 開放平臺(tái)
- WIKI程序與應(yīng)用
- 美國(guó)十大主機(jī)
字符串
字符串(String),是由零個(gè)或多個(gè)字符組成的有限串行。一般記為s=a_1 a_2\dots a_n (0\leq n \lneq\infty)。它是編程語(yǔ)言中表示文本的數(shù)據(jù)類型。
通常以串的整體作為操作對(duì)象,如:在串中查找某個(gè)子串、求取一個(gè)子串、在串的某個(gè)位置上插入一個(gè)子串以及刪除一個(gè)子串等。兩個(gè)字符串相等的充要條件是:長(zhǎng)度相等,并且各個(gè)對(duì)應(yīng)位置上的字符都相等。設(shè)p、q是兩個(gè)串,求q在p中首次出現(xiàn)的位置的運(yùn)算叫做模式匹配。串的兩種最基本的存儲(chǔ)方式是順序存儲(chǔ)方式和鏈接存儲(chǔ)方式。
字符串函數(shù)[ ]
- 連接運(yùn)算 concat(s1,s2,s3…sn) 相當(dāng)于s1+s2+s3+…+sn.
例:concat(‘11’,'aa’)='11aa’;
- 求子串。 Copy(s,I,L) 從字符串s中截取第I個(gè)字符開始后的長(zhǎng)度為l的子串。
例:copy(‘a(chǎn)bdag’,2,3)=’bda’
- 刪除子串。過(guò)程 Delete(s,I,l) 從字符串s中刪除第I個(gè)字符開始后的長(zhǎng)度為l的子串。
例:s:=’abcde’;delete(s,2,3);結(jié)果s:=’ae’
- 插入子串。 過(guò)程Insert(s1,s2,I) 把s1插入到s2的第I個(gè)位置
例:s:=abc;insert(‘12’,s,2);結(jié)果s:=’a12bc’
- 求字符串長(zhǎng)度 length(s) 例:length(‘12abc’)=5
在ASP中 求字符串長(zhǎng)度用 len(s)例: len("abc12")=5
- 搜索子串的位置 pos(s1,s2) 如果s1是s2的子串 ,則返回s1的第一個(gè)字符在s2中的位置,若不是子串,則返回0.
例:pos(‘a(chǎn)b’,’12abcd’)=3
- 字符的大寫轉(zhuǎn)換。Upcase(ch) 求字符ch的大寫體。
例:upcase(‘a(chǎn)’)=’A’
- 數(shù)值轉(zhuǎn)換為數(shù)串。 過(guò)程 Str(x,s) 把數(shù)值x化為數(shù)串s.
例:str(12345,s); 結(jié)果s=’12345’
- 數(shù)串轉(zhuǎn)換為數(shù)值。 過(guò)程val(s,x,I) 把數(shù)串s轉(zhuǎn)化為數(shù)值x,如果成功則I=0,不成功則I為無(wú)效字符的序數(shù)
例:val(‘1234’,x,I);結(jié)果 x:=1234
字符串操作[ ]
一個(gè)簡(jiǎn)單的字符串操作是“連接”:也就是說(shuō)先寫一個(gè)字符串S,隨后在后面再寫一個(gè)T得到ST這樣一個(gè)過(guò)程。 其它的常見(jiàn)操作包括在一個(gè)長(zhǎng)字符串中搜索一個(gè)子串,排列一組字符串
以及分析一個(gè)字符串。因?yàn)榇嬖谌绱硕嗟淖址畱?yīng)用方式,所以相應(yīng)地有許多權(quán)衡了不同應(yīng)用的相關(guān)算法。 高級(jí)的字符串算法通常使用包括后向樹和有限狀態(tài)機(jī)在內(nèi)的復(fù)雜機(jī)制和
字符編碼[ ]
歷史上,字符串?dāng)?shù)據(jù)類型為每個(gè)字符分配一個(gè)字節(jié),盡管精確的字符集隨著區(qū)域而改變,字符編碼足夠類似得程序員可以忽略它 — 同一個(gè)系統(tǒng)在不同的區(qū)域中使用的字符集組要
么讓一個(gè)字符在同樣位置,要么根本就沒(méi)有它。這些字符集典型的基于ASCII碼或EBCDIC碼。 意音文本的語(yǔ)言比如漢語(yǔ)、日語(yǔ)和朝鮮語(yǔ)(合稱為CJK)的合理表示需要多于256個(gè)字符(每字符一個(gè)字節(jié)編碼的極限)。常規(guī)的解決涉及保持對(duì)ASCII碼的單字節(jié)表示并使用雙字節(jié)來(lái)表示
CJK字形。現(xiàn)存代碼在用到它們會(huì)導(dǎo)致一些字符串匹配和切斷上的問(wèn)題,嚴(yán)重程度依賴于字符編碼是如何設(shè)計(jì)的。某些編碼比如EUC家族保證在ASCII碼范圍內(nèi)的字節(jié)值只表示ASCII字
符,使得使用這些字符作為字段分隔符的系統(tǒng)得到編碼安全。其他編碼如ISO-2022和Shift-JIS不做這種擔(dān)保,使得基于字節(jié)的代碼做的匹配不安全。另一個(gè)問(wèn)題是如果一個(gè)字符串的
開頭被刪除了,對(duì)解碼器的重要指示或關(guān)于在多字節(jié)序列中的位置的信息可能就丟失了。另一個(gè)問(wèn)題是如果字符串被連接到一起(特別是在被不知道這個(gè)編碼的代碼截?cái)嗔怂鼈兊慕Y(jié)尾
之后),第一個(gè)字符串可能不能導(dǎo)致編碼器進(jìn)入適合處理第二個(gè)字符串的狀態(tài)中。 Unicode也有些復(fù)雜的問(wèn)題。多數(shù)語(yǔ)言有Unicode字符串?dāng)?shù)據(jù)類型(通常是UTF- 16,因?yàn)樗赨nicode補(bǔ)充位面介入之前就被增加了)。在Unicode和本地編碼之間轉(zhuǎn)換要求理解本地編
碼,這對(duì)于現(xiàn)存系統(tǒng)要一起傳輸各種編碼的字符串而又沒(méi)有實(shí)際標(biāo)記出它們用了什么編碼就是個(gè)問(wèn)題。
算法[ ]
這是一些字符串處理算法,在字符串上進(jìn)行不同的處理:
字符串查找算法
正則表達(dá)式算法
模式匹配
字符串的匹配算法(kmp)。
相關(guān)條目[ ]