操作字符串的值是一般的開發(fā)人員必須面臨的家常便飯。操作字符串的具體方式有很多,比如說從一個字符串是提取出一部分內(nèi)容來,或者確定一個字符串是否包含一個特定的字符。下面的 JavaScript 函數(shù)為開發(fā)人員提供了他們所需要的所有功能:

創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)公司一直秉承“誠信做人,踏實做事”的原則,不欺瞞客戶,是我們最起碼的底線! 以服務(wù)為基礎(chǔ),以質(zhì)量求生存,以技術(shù)求發(fā)展,成交一個客戶多一個朋友!專注中小微企業(yè)官網(wǎng)定制,成都做網(wǎng)站、網(wǎng)站建設(shè),塑造企業(yè)網(wǎng)絡(luò)形象打造互聯(lián)網(wǎng)企業(yè)效應(yīng)。
? concat() – 將兩個或多個字符的文本組合起來,返回一個新的字符串。
? indexOf() – 返回字符串中一個子串第一處出現(xiàn)的索引。如果沒有匹配項,返回 -1 。
? charAT() – 返回指定位置的字符。
? lastIndexOf() – 返回字符串中一個子串最后一處出現(xiàn)的索引,如果沒有匹配項,返回 -1 。
? match() – 檢查一個字符串是否匹配一個正則表達(dá)式。
? substring() – 返回字符串的一個子串。傳入?yún)?shù)是起始位置和結(jié)束位置。
? replace() – 用來查找匹配一個正則表達(dá)式的字符串,然后使用新字符串代替匹配的字符串。
? search() – 執(zhí)行一個正則表達(dá)式匹配查找。如果查找成功,返回字符串中匹配的索引值。否則返回 -1 。
? slice() – 提取字符串的一部分,并返回一個新字符串。
? split() – 通過將字符串劃分成子串,將一個字符串做成一個字符串?dāng)?shù)組。
? length() – 返回字符串的長度,所謂字符串的長度是指其包含的字符的個數(shù)。
? toLowerCase() – 將整個字符串轉(zhuǎn)成小寫字母。
? toUpperCase() – 將整個字符串轉(zhuǎn)成大寫字母。
注意: concat 、 match 、 replace 和 search 函數(shù)是在 JavaScript 1.2 中加入的。所有其它函數(shù)在 JavaScript 1.0 就已經(jīng)提供了。
下面讓我們看一下如何在 JavaScript 使用這些函數(shù)。下面的代碼是用到了前面提到的所有函數(shù):
function manipulateString(passedString1, passedString2) {
var concatString;
// The string passed to concat is added to the end of the first string
concatString = passedString1.concat(passedString2);
alert(concatString);
// The following if statement will be true since first word is Tony
if (concatString.charAt(3) == "y") {
alert("Character found!");
}
// The last position of the letter n is 10
alert("The last index of n is: " + concatString.lastIndexOf("n"));
// A regular expression is used to locate and replace the substring
var newString = concatString.replace(/Tony/gi,"General");
// The following yields Please salute General Patton
alert("Please salute " + newString);
// The match function returns an array containing all matches found
matchArray = concatString.match(/Tony/gi);
for (var i=0; imatchArray.length;i++) {
alert("Match found: " + matchArray[i]);
}
// Determine if the regular expression is found, a –1 indicates no
if (newString.search(/Tony/) == -1) {
alert("String not found");
} else {
alert("String found.");
}
// Extract a portion of the string and store it in a new variable
var sliceString = newString.slice(newString.indexOf("l")+2,newString.length);
alert(sliceString);
// The split function creates a new array containing each value separated by a space
stringArray = concatString.split(" ");
for (var i=0; istringArray.length;i++) {
alert(stringArray[i];
}
alert(newString.toUpperCase());
alert(newString.toLowerCase());
}
下面是執(zhí)行上面的代碼得到的結(jié)果:
Tony Patton
Character Found!
The last index of n is: 10
Match found: Tony
Please salute General Patton
String not found
Patton
Tony
Patton
GENERAL PATTON
general patton
示例代碼把所有這些提到的函數(shù)都用到了。
特殊字符
除了這些函數(shù)之外,還有很多的特殊字符可以用來表示關(guān)鍵的效果。這些特殊字符包括:
? – 跳格鍵
? – 退格 / 刪除
? – 回車
? – 換行
? f – 換頁
特殊字符最常見的用途就是格式化輸出。例如,你可能需要在輸出中插入一個換行來正確地顯示一個值。而且,在換行時也需要回車。在一些平臺上,“ ”已經(jīng)足夠產(chǎn)生換行效果了,而在一些機(jī)器上要正確地顯示一個換行則需要“ ”。下面的例子顯示了在一個多行窗口上顯示的特殊字符:
var output = null;
output = "Special Characters";
output += " ";
output += "===============";
output += " ";
output += "t - tab";
output += " ";
output += "b - backspace/delete";
output += " ";
output += "r - carriage return";
output += " ";
output += "n - newline";
output += " ";
output += "f - form feed";
output += " ";
alert(output);
前面的例子使用加號來連接字符串,而沒有使用 concat 函數(shù)。原因很簡單,對于 concat 函數(shù)來說,每一個操作都需要一個新的變量;反之,我們這里用的這種方法則簡單地擴(kuò)展了原有的值,而不需要新的變量。而且,示例中使用換碼符來正確地顯示特殊字符。系統(tǒng)將一個反斜線當(dāng)作一個信號,認(rèn)為它后面會跟一個特殊字符,但是連著兩個反斜線則抵消這種操作。輸出中的每個字符都通過 newline 特殊字符被顯示在新的一行。
添加到工具箱中
特殊字符和函數(shù)可以與其它 JavaScript 技巧結(jié)合起來解決很多問題。其中一種情況是用來進(jìn)行 JavaScript 客戶端表單驗證,這篇文章中提出的方法可以簡單地用來實現(xiàn)表單驗證。
下面的代碼將在一個表單被提交時調(diào)用。要提交的表單包含三個域:名稱、地址和郵政編碼。為了實現(xiàn)起來比較簡單,我們只驗證每個域都不能為空,并且郵政編碼必須是數(shù)字。下面的 JavaScript 代碼完成這一功能:
function validation() {
var doc = document.forms[0];
var msg = "";
if (doc.Name.value == "") {
msg += "- Name is missing ";
}
if (doc.Address.value == "") {
msg += "- Address is missing ";
}
if (doc.ZipCode.value == "") {
msg += "- Zip code is missing ";
}
var zip = new String(doc.ZipCode.value);
if (zip.search(/^[0-9][0-9][0-9][0-9][0-9]$/)==-1) {
msg += "- Enter valid Zip code";
}
if (msg == "") {
doc.submit;
} else {
msg = "Please correct the following validation errors and re-submit: " + msg;
alert(msg);
}
}
在用戶提交表單時,這個函數(shù)就會被調(diào)用。對函數(shù)的調(diào)用是在一個 HTML 按鈕的 onSubmit 事件中實現(xiàn)的。
input type="button" type="submit" value="submit" onClick="validation()"
驗證函數(shù)檢查每個域是否為空。如果發(fā)現(xiàn)了一個空值,那么就會在驗證消息變量 msg 后面添加一個出錯消息。此外,還使用了一個正則表達(dá)式來驗證郵政編碼域的格式。在這里,我們只接受五位數(shù)的美國地區(qū)郵政編碼。如果發(fā)現(xiàn)有任何錯誤(即 msg 變量不為空),那么程序就會顯示一個錯誤消息;否則的話,程序就會提交表單。
一門強(qiáng)大的語言
JavaScript 已經(jīng)發(fā)展成熟為一種功能完備的語言,能夠用來構(gòu)建強(qiáng)大的應(yīng)用程序。它是對具有非連接性天性的 Web 界面的一個完美的補(bǔ)充,能夠在不與 Web 服務(wù)器交互的情況下完成很多客戶端操作。
Unicode 作為字符編碼的標(biāo)準(zhǔn),它用 碼位 (code point)來索引某個字符(全球統(tǒng)一標(biāo)識符), 字符編碼 用來標(biāo)識碼位,一個字符編碼視為一個 編碼單元 。在 JavaScript 里,字符串基于16位的字符編碼(UTF-16,Unicode 的其中一種)來構(gòu)建一個編碼單元(以十或十六進(jìn)制表示)。
前65535個字符編碼稱之為 基本多文種平面字符 (BMP, Basic multilingual plane ),一個編碼標(biāo)識一個碼位;當(dāng)超出 BMP 的范圍時就會用兩個編碼(代理對)來標(biāo)識一個碼位,稱之為 輔助平面字符 。大部分字符都處在 BMP 范圍內(nèi),另有一部分字符處在輔助平面內(nèi),這導(dǎo)致一些問題,比如“????”這個漢字:
由于 String.length 是用編碼單元的數(shù)量來計算長度,所以當(dāng)遇到如“????”這樣有兩個編碼單元的冷僻字時,字符個數(shù)的計算就會出現(xiàn)偏差。在 ES6 標(biāo)準(zhǔn)中,正則表達(dá)式的修飾符 /u 會將字符匹配模式從編碼單元模式切換到字符模式,于是可以利用正則匹配來計算字符個數(shù):
需要注意的是當(dāng) .match() 方法沒有匹配到內(nèi)容時,會返回 null,并且這種方法處理長字符串的開銷較大。
.charCodeAt() 和 .codePointAt() 方法都會獲得字符編碼的十進(jìn)制值,不同的是 .codePointAt() 方法可以獲得以 代理對 來標(biāo)識的碼位十進(jìn)制值,也是最終指向該字符的完整字符編碼的十進(jìn)制值。
Unicode 序列有多種規(guī)則,在 ES6 中用 .normalize() 方法來統(tǒng)一字符串的序列(“NFC”、“NFD”、“NFKC”、“NFKD”),這影響到做諸如比較運算等操作的結(jié)果,比如下面這個排序操作:
REFS:
《深入理解ES6》2.字符串和正則表達(dá)式
Unicode等價性
字符串的屬性:length =》 代表字符串長度
字符串中,字符的位置也是從0開始,依次遞增。
不會修改原字符串,會將拼接好的字符串以返回值的方式返回出來。
可以在字符串中查找指定的字符。
可以查到的的話返回值字符所在的位置。
查不到返回 -1。
如果要查找的字符在字符中存在多個,永遠(yuǎn)只找一個。
使用方法和 indexOf 一樣。
但是 indexOf 是從前往后查找,lastindexOf() 是從后往前查找。
有兩個參數(shù)。
第一個參數(shù),舊的字符。
第二個參數(shù),新的字符。
不會修改原數(shù)組。
會將替換好的數(shù)組以返回值的形式返回出來。
如果舊的字符在字符串中不止一個,則替換第一個。
不會改變原數(shù)組。
會將轉(zhuǎn)化好的數(shù)組以返回值的形式返回出來 。
如果括號中什么都不寫;則將整個字符串作為數(shù)組的一個元素轉(zhuǎn)化成數(shù)組。
如果括號中是空字符串,則將每個字符都作為一個數(shù)組的元素轉(zhuǎn)化成數(shù)組。
如果括號中寫字符,則將這個字符變成逗號(,),并以其隔開數(shù)組元素。
如果字符串中沒有這個字符,效果相當(dāng)于什么都不寫。
如果目標(biāo)字符在開頭或者結(jié)尾,則轉(zhuǎn)成數(shù)組后,生成一個空字符串的元素。
split 還有第二個參數(shù):
第二個參數(shù)代表轉(zhuǎn)成數(shù)組后,所保留的元素的數(shù)量。(從以轉(zhuǎn)化好的數(shù)組下標(biāo)為0的元素開始)
有兩個參數(shù)
第一個參數(shù):起始的位置
第二個參數(shù):截取的數(shù)量
不會改變原數(shù)組
會將截取到的字符串以返回值的形式返回出來
有兩個參數(shù)
第一個參數(shù):起始的位置(返回時包括位置所對應(yīng)的字符)
第二個參數(shù):結(jié)束的位置(返回時不包括位置所對應(yīng)的字符)
不會改變原數(shù)組
會將截取到的字符串以返回值的形式返回出來
不會改變原數(shù)組
會將轉(zhuǎn)換好的字符串以返回值的形式返回出來
不會改變原數(shù)組
會將轉(zhuǎn)換好的字符串以返回值的形式返回出來
字符就是單個字符,字符串就是多個字符的集合
(補(bǔ)充:字符型常量 和 字符串常量
字符常量是單引號引起的一個字符 如 'A' '$' 'a' '0'
字符串常量是雙引號引起的若干個字符 如 "hello" "12345" "he123" "a")
傻兔子~……^-^
首先創(chuàng)建一個字符串,創(chuàng)建字符串的方法有兩種:
1.字面量:var str = "abc123efg456";
2.構(gòu)造函數(shù):var str = newString("abc123efg456");
其次,需要注意的是,javascript的字符串是不可變的,String類定義的方法都不可以改變字符串內(nèi)容。若是需要通過方法改變字符串的內(nèi)容,需要將返回值重新賦值給原來的字符串。如:str = str.toUpperCase();
下面,介紹比較常用的字符串的方法:
var str = "1abc123abc456abc";
功能:返回指定的字符串值在字符串中首次出現(xiàn)的位置。
參數(shù):s為要檢索的字符,必需;n為可選的字符參數(shù),規(guī)定字符串檢索的位置。
demo:
var index1 = str.indexOf("a");
var index2 =str.indexOf("a",8);
var index3 =str.indexOf("a",14);
console.log(index1); // 1
console.log(index2); // 13
console.log(index3); // -1? 從檢索的位置檢索不到字符,返回-1
功能:返回一個指定的字符串值最后出現(xiàn)的位置,在一個字符串中的指定位置從后向前搜索。
參數(shù):s為要檢索的字符,必需;n為可選的字符參數(shù),規(guī)定字符串檢索的位置。
demo:
var index1 =str.lastIndexOf("a");?
var index2 =str.lastIndexOf("a",11);
var index3 =str.lastIndexOf("a",0);
console.log(index1); // 13
console.log(index2); // 7
console.log(index3); // -1? 從檢索的位置檢索不到字符,返回-1
功能:返回指定位置的字符。
參數(shù):n表示字符串中某個位置的索引,不寫默認(rèn)為第0個字符。
demo:
var s = str.charAt(3);
console.log(s);? // c
功能:返回指定位置的字符的Unicode編碼。
參數(shù):n表示字符串中某個位置的索引,可以沒有參數(shù),默認(rèn)是索引為0的參數(shù)。
demo:
var s = str.charCodeAt(3);
console.log(s);? // 99
注:c的unicode編碼為99。
注意:charAt(n)方法和charCodeAt(n)方法類似,前者返回的是字符,后者返回的是字符的unicode編碼。
功能:將編碼轉(zhuǎn)成字符方法。
參數(shù):十進(jìn)制和十六進(jìn)制,不支持unicode編碼。
demo:
var s1 =String.fromCharCode("0x56fd");
var s2 = String.fromCharCode(22269);
console.log(s1);?? //國
console.log(s2);? //國
注:“國”的十六進(jìn)制編碼是56fd,十進(jìn)制是22269。
功能:根據(jù)指定位置,截取子串,從m到n,不包括n。
參數(shù):m,n為索引。
demo:
var s = str.slice(2,7);
console.log(s); // bc123
功能:根據(jù)指定位置,截取子串,從m到n,不包括n。
參數(shù):m,n為索引。
demo:
var s = str.substring(2,7);
console.log(s); // bc123
功能:根據(jù)指定位置,截取子串,從m位置取,共取n個。
參數(shù):m,n為索引。
demo:
var s = str.substr(2,7);
console.log(s); // bc123ab
功能:字符串替換。
參數(shù):oldstr為需要被替換的字符,newstr為替換的字符。
demo:
var s =str.replace("a","l");
console.log(s); // 1lbc123abc456abc
注意:每次只能替換一個符合條件的字符。
功能:分割字符,返回成為數(shù)組。
參數(shù):"s"為分割的字符。
demo1:
var arr1 = str.split("b");
console.log(arr1);? // ["1a", "c123a","c456a", "c"]
demo2:
var arr2 = str.split(); //["1abc123abc456abc"]
console.log(arr2);
demo3:
var arr3 = str.split("");
console.log(arr3); // ["1","a", "b", "c", "1", "2","3", "a", "b", "c", "4","5", "6", "a", "b", "c"]
注意:參數(shù)不寫的時候,返回原字符串組成的數(shù)組;參數(shù)為空字符的時候,將每個字符分割,返回一個數(shù)組
功能:檢索字符串中指定的子字符串,返回第一個與字符串匹配的索引值。
參數(shù):需要被檢索的字符串。
demo:
var s1= str.search("abc");
var s2 = str.search("efg");
console.log(s1); // 1
console.log(s2); // -1
注:如果沒有找到任何匹配的子串,則返回-1。
功能:在字符串內(nèi)檢索指定的值,匹配到就返回指定的字符值。
參數(shù):需要被檢索的字符串。
demo:
var s1= str.match("abc");
var s2 = str.match("efg");
console.log(s1); // ["abc",index: 1, input: "1abc123abc456abc", groups: undefined]
console.log(s2); // null
注:該方法類似indexOf()和lastIndexOf(),但是它返回指定的值,沒有就返回null
功能:連接兩個或多個字符串,返回連接后的字符串。
參數(shù):需要連接的字符串。
demo:
var str1="abc ";
var str2="123";
console.log(str1.concat(str2));?? // "abc 123"
提示:如果需要拼接字符串,用運算符“+”更簡單。
功能:把字符串轉(zhuǎn)換為小寫。
參數(shù):無
demo:
var str = "ABC abc";
console.log(str.toLowerCase()); // abcabc
功能:把字符串轉(zhuǎn)換為大寫。
參數(shù):無
demo:
var str = "ABC abc";
console.log(str.toUpperCase()); // ABCABC
功能:把字符串顯示為大號字體。
參數(shù):無
demo:
var s = str.big();
document.write(str+"");
document.write(s);
功能:把字符串顯示為小號字。
參數(shù):無
demo:
var s = str.small();
document.write(str+"");
document.write(s);
功能:把字符串顯示為粗體。
參數(shù):無
demo:
var s = str.bold();
document.write(str+"");
document.write(s);
功能:把字符串顯示為斜體。
參數(shù):無
demo:
var s = str.italics();
document.write(str+"");
document.write(s);
功能:將字符以指定的顏色顯示。
參數(shù):顏色名(red)、RGB 值(rgb(255,0,0))或者十六進(jìn)制數(shù)(#FF0000)。
demo:
var s = str.fontcolor("red");
document.write(str+"");
document.write(s);
功能:將字符以指定的字號顯示。
參數(shù):size參數(shù)必須是從1和7之間的數(shù)字,1表示小的字號,7表示最大的字號。
demo:
var s = str.fontsize(7);
document.write(str+"");
document.write(s);
功能:把字符串顯示為超鏈接。
參數(shù):鏈接的URL。
demo:
var s =str.link("");
document.write(str+"");
document.write(s);
功能:把字符串加字符串顯示。
參數(shù):無
demo:
var s = str.strike();
document.write(str+"");
document.write(s);
以上是對字符串方法的整理,如有修改、補(bǔ)充,后續(xù)會更新。
文中如果紕漏,錯誤,不合理,描述不清晰,不準(zhǔn)確等問題,歡迎大家留言指正...
當(dāng)前名稱:字符javascript,字符符號
URL分享:http://chinadenli.net/article49/dsioheh.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、移動網(wǎng)站建設(shè)、企業(yè)網(wǎng)站制作、商城網(wǎng)站、面包屑導(dǎo)航、軟件開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)