一、什么是字符串?
字符串就是多個(gè)只讀字符組成的數(shù)組。
為什么說是只讀?
只讀是因?yàn)樽址乃蟹椒ǘ疾粫?huì)改變原字符串,包括通過下標(biāo)修改,字符串依舊是保持原樣。
var str="abcd" console.log(str) //"abcd" str[0]="c" console.log(str) //"abcd"
為什么說字符串也是數(shù)組?
因?yàn)楹蛿?shù)組有相同點(diǎn)
(2)能夠通過下標(biāo)獲取某個(gè)字符;
(2)能夠使用.length獲取字符串的長度;
(3)能夠通過循環(huán)遍歷得到每一個(gè)字符。
二、字符串的創(chuàng)建方式
字符串的創(chuàng)建也分兩種:字面量和構(gòu)造函數(shù)
// 字面量方式 var str="hello" // 構(gòu)造函數(shù)方式 var str2=new String("hello")
字符串也可以獲取長度,通過.length。所以可以對字符串進(jìn)行遍歷。
var str="hello" for(var i=0;i<str.length;i++){ console.log(i) }
注意:不能通過下標(biāo)去修改字符串中某一個(gè)字符的值,修改不會(huì)生效。
三、定義
字符集∑
一個(gè)字符集∑是一個(gè)建立了全序關(guān)系的集合,即任意屬于∑的元素可以比較,字符集中的元素叫做字符。
字符串
一個(gè)字符串S將n個(gè)字符順次排列組成,n為S的長度,計(jì)作|S|,此文使用的字符串均從1下標(biāo)開始
子串
字符串S的子串S[i...j],i≤j,表示S串中從i到j(luò)這一段,也就是順次排列S[i],S[i+1],...,S[j]形成的字符串。
子序列
字符串S的子序列是從S中將若干元素提取出來并不改變相對位置形成的序列,即S[p1],S[p2],...,S[pt],1≤p1≤p1≤...≤pt≤|S|。
后綴
是指從某個(gè)位置i開始到整個(gè)串末尾結(jié)束的一個(gè)特殊子串。字符串S的從i開頭的后綴表示為Suffix(S,i),也就是Suffix(S,i)=S[i...|S|],suf(S,k)表示S后k個(gè)字符組成的后綴。
前綴
是指從串首開始到某個(gè)位置i結(jié)束的一個(gè)特殊子串。字符串S的從i結(jié)尾的前綴表示為Preffix(S,i),也就是Preffix(S,i)=S[1...i],pre(S,k)表示S前k個(gè)字符組成的前綴。
真前綴指除了S本身的S的前綴。
舉例來說,字符串 abcabcd 的所有前綴為 {a, ab, abc, abca, abcab, abcabc, abcabcd}, 而它的真前綴為 {a, ab, abc, abca, abcab, abcabc}。
字符串的存儲
使用 char 數(shù)組存儲,用空字符 \0 表示字符串的結(jié)尾(C 風(fēng)格字符串)。
使用 C++ 標(biāo)準(zhǔn)庫提供的 string 類。
字符串常量可以用字符串字面量(用雙引號括起來的字符串)表示。
C語言網(wǎng)提供由在職研發(fā)工程師或ACM藍(lán)橋杯競賽優(yōu)秀選手錄制的視頻教程,并配有習(xí)題和答疑,點(diǎn)擊了解:
一點(diǎn)編程也不會(huì)寫的:零基礎(chǔ)C語言學(xué)練課程
解決困擾你多年的C語言疑難雜癥特性的C語言進(jìn)階課程
從零到寫出一個(gè)爬蟲的Python編程課程
只會(huì)語法寫不出代碼?手把手帶你寫100個(gè)編程真題的編程百練課程
信息學(xué)奧賽或C++選手的 必學(xué)C++課程
藍(lán)橋杯ACM、信息學(xué)奧賽的必學(xué)課程:算法競賽課入門課程
手把手講解近五年真題的藍(lán)橋杯輔導(dǎo)課程