var str1 = "hello";
str1 = str1 + " javaScript";
document.write(str1);
或者:
var str1 = "hello";
str1 += " javaScript";
document.write(str1);
输出:hello javaScript
要在字符串中添加换行符,需要使用转义字符"\n",但这种方法只能用在像警告、确认对话框之类的情况下。
如果将这段文本作为HTML内容呈现,就无效了,此时用"<br>"代替它
js concat()方法:
string.concat(string2, string3[, ..., stringN]);
var str2 = "hello".concat(" javaScript"," world");
document.write(str2);
这种拼接的方式不如直接用加号拼接方便;
js 字符串长度length属性:
返回字符个数,而不是字节长度;
var str = "kitty猫";
document.write(str.length);//6
js substr(start [,length]) 返回从start开始的length个字符组成的字符串;
不设置参数,则返回字符串本身;
设置start,则返回start到字符串结尾;start为负数一般浏览器视为从浏览器最后开始数,倒数第一个字符为-1;IE8-则转为0;
设置length时,start也必须设置,返回start开始length个字符;
length大于从start到字符串结尾的长度,则返回从start到字符串结尾;
length为负数,直接转成0,返回空字符串;
var str = "hello world";
document.write(str.substr());//不设置参数,返回字符串本身
document.write(str.substr(1));//"ello world"
document.write(str.substr(1,7));//"ello wo"(保留了最后的空格)
document.write(str.substr(1,11));//"ello world"
document.write(str.substr(-4));//"orld"(IE8-返回整个字符串)
document.write(str.substr(-4,2));//"or"
document.write(str.substr(1,-1));//""
document.write(str.substr(-4,-2));//""
js substring(start, end) 返回从字符串start索引到end索引之间的子串(不包含end索引的字符)
start和end索引如果是负数就会变成0;
当start和end最终都是正值时,比较两个值的大小,如果end小于start就相互交换值,再获取子串
var str = "hello world";
document.write(str.substring());//"hello world"
document.write(str.substring(1));//"ello world"
document.write(str.substring(1,7));//"ello w"
document.write(str.substring(7,1));//"ello w"
document.write(str.substring(-1));//"hello world"
document.write(str.substring(3,-3));//"hel"
document.write(str.substring(-1,-3));//""
document.write(str.substring(-3,-1));//""
document.write(str.substring(7,8));//"o"
document.write(str.substring(8,7));//"o"
js slice(start, end) 返回从字符串start索引到end索引之间的子串(不包含end索引处的字符)
start或者end如果是负数就从字符串最后一个字符串往左数,最右边的字符索引为-1;
如果end索引小于start索引返回空字符串
var str = "hello world";
document.write(str.slice());//"hello world"
document.write(str.slice(1));//"ello world"
document.write(str.slice(1,7));//"ello w"
document.write(str.slice(7,1));//""
document.write(str.slice(-1));//"d"
document.write(str.slice(3,-3));//"lo wo"
document.write(str.slice(-1,-3));//""
document.write(str.slice(-3,-1));//"rl"
document.write(str.slice(7,8));//"o"
document.write(str.slice(8,7));//"o"
js toLowerCase()和toUpperCase()
toLowerCase()将字符串转为全小写;
toUpperCase()将字符串转为全大写;
不影响字符串本身;
var str = "ShanGHai";
document.write(str.toLowerCase());//"shanghai"
document.write(str.toUpperCase());//"SHANGHAI"
document.write(str);//"ShanGHai"
js indexOf()
返回某个指定的字符串在字符串中首次出现的位置(从左向右)。包含子串返回下标,不包含返回-1;
js lastIndexOf()
返回从右向左出现某个字符或字符串的首个字符索引值;
js charAt(index) 返回某个索引处的字符;
js charCodeAt(index) 返回某个索引处字符的unicode值;
js String.fromCharCode(index1,index2...indexn)
var str = String.fromCharCode(72, 101, 108, 108, 111);
document.write(str);//"Hello"
js stringObject.split(separator,howmany)
separator必需,字符串或正则表达式,从该参数指定的地方分割字符串,返回的子串数组不包含分割符;
howmany可选。该参数可指定返回的数组的最大长度(为负数和大于数组长度返回整个数组)。如果设置了该参数,返回的子串不会多于这个参数指定的数组。如果没有设置该参数,整个字符串都会被分割,不考虑它的长度。
document.write(str.split(" "));//How,are,you,doing,today?
document.write(str.split(" ",3));//How,are,you
document.write(str.split(" ",6));
document.write(str.split(" ",-2));
document.write(str.split(""));//H,o,w, ,a,r,e, ,y,o,u, ,d,o,i,n,g, ,t,o,d,a,y,?
var str2 = 'a|b|c|d';
document.write(str2.split("|",-1.5));//a,b,c,d
var str3 = "abc1de23fg4hi567jk8lm";
document.write(str3.split(/\d/g));//abc,de,,fg,hi,,,jk,lm
“.”,“|”和“\”都是转义字符,必须得加"\\";
奇怪这里测试|分割字符串竟然不用转义,今天还碰到一个问题,在js脚本中直接|没法分割字符串的。
字节统计未去研究:参考自:星期八的Blog
上面的length属性可以确定字符串的字符长度;
当js校验时,需要限定字符长度,必须根据字节来统计;
匹配中文字符的正则表达式: [\u4e00-\u9fa5]
匹配双字节字符(包括汉字在内):[^\x0000-\x00ff]
下面的字节长度统计来自于:星期八的Blog
str.charCodeAt(i)>255 的字符占两个字符;
var lenFor = function(str){
var byteLen=0,len=str.length;
if(str){
for(var i=0; i<len; i++){
if(str.charCodeAt(i)>255){
byteLen += 2;
}else{
byteLen++;
}
}
return byteLen;
}else{
return 0;
}
}
正则表达式检测字符串的字节长度:
var lenReg = function(str){
return str.replace(/[^x00-xFF]/g,'**').length;
}
用正则表达式检测所用的时间竟然是for循环的两倍!!!!
这个好使---
function getBytesLength(str) {
// 在GBK编码里,除了ASCII字符,其它都占两个字符宽
return str.replace(/[^\x00-\xff]/g, 'xx').length;