1. 先說一下String類是什麼~
String類的對象不等同於字串,"abc"與new String("abc")是不同的,當你使用String類操作字串的時候,指令碼解譯器會自動將字串轉換成一個臨時String對象,然後再調用String類的方法,然後會放棄該臨時String對象,甚至可以在字串中直接查看屬性,String.length來查看長度,所以一般沒人使用他的建構函式new String("哈哈~好傻哦")這樣 ,而是直接操作字串。所以我們說String類是字串未經處理資料類型的一個封裝。
2. 再說一下String類的屬性
String類只有一個屬性那就是String.length ,我們可以試一下~
trace("abcde".length);
trace("12345".length);
trace("<#.,?".length);
trace("換成中文呢".length);
trace(" ".length);
trace("a1<換 ".length);
以上輸出的通通都是5
說明無論英文中文數字還是符號或者空格都按一個字元算,這樣方便我們索引了,因為所有字串的索引都是從0的,所以所有的字串的最後一個字元都是這個字串.length-1
3. 下邊是方法拉
*合并字串:
my_str.concat(參數1,參數2,參數3...)
這個方法能把字串my_str和所有的參數合并成一個字串,但不會改變my_str的值,而是返回一個新的字串。下邊試一下
a="我是a"
b="我是b"
c="我是c"
abc=a.concat(b,c)
trace(abc)
輸出面版會輸出:我是a我是b我是c
*把ASCII碼轉成字元
以前都是用這個chr(number),比如trace(chr(64)) ,輸出:@
不過現在不推薦使用了而推薦使用String類的String.fromCharCode(參數1,參數2,...)
使用這個的好處好象只有可以接受多個參數,例如:
trace(String.fromCharCode(78,83,72,69,78)) //輸出:NSHEN
鍵盤上每一個鍵都對應一個ASCII碼,具體什麼對應什麼查一下鍵位表就知道了。
下邊這裡是輸出26個英文字母~
for(var i=65;i<=90;i++){
trace(String.fromCharCode(i))
}
*截取字元(串)~
有兩個方法~先說第一個
String.slice(開始索引,結束索引+1)~很簡單,上邊說過,記住索引是從0開始的一直到String.length - 1~試一下吧
trace("ABCDEFGHIJKLMNOPQRSTUVWXYZ".slice(0,3)) //輸出:ABC
如果不寫後一個參數,後一個參數預設為String.length
如果參數是負數,則表示從後邊開始向前數,最後一個字元為-1
還有一個方法
String.substr(開始索引,截取長度)
trace("ABCDEFGHIJKLMNOPQRSTUVWXYZ".substr(0,5))//輸出ABCDE
//----------------------------------------------------------
除了上邊的4個方法 concat()、fromCharCode()、slice() 和 substr() 之外,String 對象的所有其它方法都是通用方法。這意味著這些方法本身先調用 this.toString(),然後再執行它們的操作,而且您可以將這些方法用於其它非 String 對象。
*搜尋字串中的子字串
String.indexOf(要搜尋的字串,開始位置)
String.lastIndexOf(要搜尋的字串,開始位置)
兩個方法,都是搜尋字串中的要搜尋字元,搜到第一個匹配項並返回位置,搜不到就會返回-1,不同的是第一個是從左向右搜尋,第二個卻是從右向左搜尋,試一下
trace("ABCDEFGABCDEFG".indexOf("D")) //輸出:3
trace("ABCDEFGABCDEFG".indexOf("DEFG")) // 輸出:3
trace("ABCDEFGABCDEFG".indexOf("找不到找不到~"))//輸出:-1
trace("ABCDEFGABCDEFG".lastIndexOf("D")) //輸出:10
trace("ABCDEFGABCDEFG".lastIndexOf("DEFG"))//輸出:10
trace("ABCDEFGABCDEFG".lastIndexOf("找不到找不到~"))//輸出:-1
*轉換字母大小寫~
String.toLowerCase()
String.toUpperCase()
兩個函數很簡單,直接看例子
myStr="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
trace(myStr.toLowerCase()) //輸出:abcdefghijklmnopqrstuvwxyz
trace(myStr) //輸出:ABCDEFGHIJKLMNOPQRSTUVWXYZ
說明這個函數只是返回副本,並不會改變原來的字串!
另一個類似不說了~~
*最後一個方法了,轉字串為數組!
String.split(分隔字元號,放入數組的個數)
第2個參數是可選的,可以不用 ,看例子
my_str = "ABCDEFG";
i = my_str.split(""); //如果分割符號是“”空的話,每個字元都被看為單獨一個~
trace (i); //輸出:A,B,C,D,E,F,G
j= my_str.split("",3)
trace(j) //輸出:A,B,C
*super-tomato大大給我們擴充了一個trim()方法,用來刪除字串前後的多餘空格!
先瞭解一下,有三種空格!
Acsii碼分別為:
32 英文空格
9 Tab空格
12288 中文雙位元組
研究一下吧,代碼如下:
String.prototype.trim = function() {
for(var i=0; i<this.length; i++) {
if(this.substr(i, 1).charCodeAt() > 32 && this.substr(i, 1).charCodeAt() != 12288) {
this = this.substr(i, this.length);
break;
}
}
for(var i=this.length-1; i>=0; i--) {
if(this.substr(i, 1).charCodeAt() > 32 && this.substr(i, 1).charCodeAt() != 12288) {
this = this.substring(0, i+1);
break;
}
}
return this;
}
var test = "\t \n a \t\n";
trace(test.trim());
基本原理就是除空格以外截取子字串,從左邊向右截一遍,從右邊再向左截一遍,最後返回結果