chartAt(x)
chartAt(x)返回字符串中x位置的字符, 下标从0开始
//charAt(x)
var myString = 'jQuery FTW!!!';
console.log(myString.charAt(7));
//output: F
charCodeAt(x)
charCodeAt(x) 返回字符串中x 位置处字符的unicode 值
//charCodeAt(position)
var message="jquery4u"
//alert "113"
alert(message.charCodeAt(1)
concat(v1,v2...)
concat()方法用于连接两个或者多个字符串,此方法不改变现的字符串, 返回拼接后的新的字符串
//concat(v1, v2,..)
var message="Sam"
var final=message.concat(" is a"," hopeless romantic.")
//alerts "Sam is a hopeless romantic."
alert(final)
match(regexp)
根据正则表达式在字符串中搜索匹配项。如果没有找到匹配项,则返回一个信息数组或null
//match(regexp) //select integers only
var intRegex = /[0-9 -()+]+$/;
var myNumber = '999';
var myInt = myNumber.match(intRegex);
console.log(isInt);
//output: 999
var myString = '999 JS Coders';
var myInt = myString.match(intRegex);
console.log(isInt);
//output: null
replace(regexp/substr, replacetext)
replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
//replace(substr, replacetext)
var myString = '999 JavaScript Coders';
console.log(myString.replace(/JavaScript/i, "jQuery"));
//output: 999 jQuery Coders
//replace(regexp, replacetext)
var myString = '999 JavaScript Coders';
console.log(myString.replace(new RegExp( "999", "gi" ), "The"));
//output: The JavaScript Coders
slice(start,[end])
slice() 方法可提取字符串的某个部分,并且返回一个新的字符串,也就是不会对原字符串进行修改。包括字符串从 start 开始(包括 start)到 end 结束(不包括 end)为止的所有字符。
//slice(start, end)
var text="excellent"
text.slice(0,4) //returns "exce"
text.slice(2,4) //returns "ce"
substr(start, [length])
substr() 方法可在字符串中抽取从 start 下标开始的指定数目的字符。返回一个新的字符串,包含从 start(包括 start 所指的字符) 处开始的 length 个字符。如果没有指定 length,那么返回的字符串包含从 start 到该字符串的结尾的字符。
//substr(from, to)
var text="excellent"
text.substr(0,4) //returns "exce"
text.substr(2,4) //returns "cell"
substring(from,[to])
substring() 方法用于提取字符串中介于两个指定下标之间的字符,方返回的子串包括 start 处的字符,但不包括 stop 处的字符,to 可选,如果省略该参数,那么返回的子串会一直到字符串的结尾
//substring(from, [to])
var myString = 'javascript rox';
myString = myString.substring(0,10);
console.log(myString)
//output: javascript
subtring 、substr、slice 之间的不同和相同
不同点:substring不支持负值,其他两种方式均支持负数表示,并且是从右边第一位开始计数。
substr的第二个参数是长度,这是和其他两种方式最大的不同之处,
slice的方向性比较强,永远是从start=>end对应左=>右
相同点: 并且返回一个新的字符串,也就是不会对原字符串进行修改
splice
| 参数 | 描述 |
|---|---|
| index 必需 | 整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置 |
| howmany | 必需。要删除的项目数量。如果设置为 0,则不会删除项目。 |
| item1, ..., itemX | 可选。向数组添加的新项目。 |
返回值
Array 包含被删除项目的新数组,如果有的话。
请注意,splice() 方法与 slice() 方法的作用是不同的,splice() 方法会直接对数组进行修改
区分英文字符的两种方法(正则和charCodeAt())
正则无疑是最强大的判断各种条件的方法, 最近也在研习它,
虽然枯燥, 但仍有乐趣. 用它来判断一个双字节的中文字符也是轻而易举地.
核心代码如下:
regExpForm.οnblur=function(){
entryVal=this.value;
entryLen=entryVal.length;
cnChar=entryVal.match(/[^\x00-\x80]/g);//利用match方法检索出中文字符并返回一个存放中文的数组
entryLen+=cnChar.length;//算出实际的字符长度
}
value是个字符串如:1258好abc
match是匹配
[ ]表示可以出现其中的任意一个字符。
^表示我们要用这个正则表达式检查以特定字符串开头的字符串
\x00-\x80是汉字表示
g可以多次匹配
第二种方法是通过charCodeAt()方法判断Unicode码值, 若大于255即为中文字符(为什么? 请Google ). Mr.Think并不建议用这种方法的, 它的执行效率没有正则高, 也没有正则简单. 核心代码如
entryVal=this.value;
entryLen=entryVal.length;
for(var i=0;i<entryVal.length;i++){
if(entryVal.charCodeAt(i)>255){//遍历判断字符串中每个字符的Unicode码,大于255则为中文
cnArr.push(entryVal[i]);//讲符合条件的值插入到中文字符数组中
//注意一个小bug,push是向数组的末尾添加一个或多个元素并返回新的长度,所以未刷新的情况下反复blur会累加字符值
}
}
entryLen+=cnArr.length;