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
先了解一下,有三种空格!
Acsii码分别为:
9 Tab空格
12288 中文双字节
研究一下吧,代码如下:
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());
基本原理就是除空格以外截取子字符串,从左边向右截一遍,从右边再向左截一遍,最后返回结果