字符串的一些方法

1.charAt 返回指定索引出的字符

var str='abcd';

var a=str.charAt(0);

console.log(a); //'a'

console.log(str); //'abcd'

2.charCodeAt 返回指定索引出的unicode字符

 str.charCodeAt(0);   //97

3.indexof  判断一个字符第一次出现在某个字符串的索引,如果包含返回它的索引,如果不包含返回-1.

str.indexOf('a');     //0

str.indexOf('e');     //-1

4.lastIndexOf 判断一个字符最后一次出现在某个字符串的索引,如果包含返回它的索引,如果不包含返回-1.

str.lastIndexOf('b');   //1

str.lastIndexOf('e');   //-1

5.concat拼接2个字符串,返回一个新字符串,对原有字符串没有任何改变。

var str='qwe';

var str1='abc';

var str2=str.concat(str1);

    console.log(str2);//"qweabc"

6.substr(n,m) 从索引n开始,截取m个字符,将截取的字符返回,对原字符串没有任何改变。

var b=s.substr(1,1)

console.log(b);  //'w'

7.substring(n,m)   从索引n开始,截取到索引m,不包括m.将截取的字符返回,对原字符串没有任何改变.

var ee=str.substring(1,3);

console.log(ee);  //"bc"

8.slice(n,m)   从索引n开始,截取到索引m,不包括m.将截取的字符返回,对原字符串没有任何改变.

var aa=str.slice(0,3);

console.log(aa);//'abc'

9.split  用指定字符分割字符串,返回一个数组.对原字符串没有任何改变。

var a=str.split('');

console.log(a);  //["a", "b", "c", "d"]

10.replace('a',1);  替换指定字符,返回替换后新的字符串,对原有字符串有改变。(第一个参数可以是正则表达式) 只能替换一次 ,配合正则模式修饰符g使用

var str='aaaaee';

var reg=/a/g;

str.replace(reg,1);   //"1111ee"

11.match() 可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。把找到的字符放在数组里,返回一个数组。

var str='aaaa3ed33';

var reg=/a/g;

str.match(reg);  //["a", "a", "a", "a"]

12.search() 方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。

es6新增加的方法

1.codePointAt()  能够正确处理4个字节储存的字符,返回指定索引出一个字符的码点。codePointAt方法是测试一个字符由两个字节还是由四个字节组成的最简单方法。

var s='𠮷a';

s.codePointAt(0) // 134071

s.codePointAt(1)// 57271


codePointAt方法返回的是码点的十进制值,如果想要十六进制的值,可以使用toString方法转换一下。

vars='𠮷a';s.codePointAt(0).toString(16)// "20bb7"s.codePointAt(2).toString(16)// "61"不能识别32位的UTF-16字符

配合for...of循环使用,因为它会正确识别32位的UTF-16字符。

vars='𠮷a';for(letchofs){console.log(ch.codePointAt(0).toString(16));}// 20bb7// 61


2.codePointAt用于从码点返回对应字符,但是这个方法不能识别32位的UTF-16字符(Unicode编号大于0xFFFF)。

String.fromCodePoint(0x20BB7)// "𠮷"String.fromCodePoint(0x78,0x1f680,0x79)==='x\uD83D\uDE80y'// true

3.for..of  字符串的遍历器接口

for(letcodePointof'foo'){console.log(codePoint)}// "f"// "o"// "o"

4.at()  返回指定索引处的字符

'abc'.at(0)// "a"'𠮷'.at(0)// "𠮷"


5.includes():返回布尔值,表示是否找到了参数字符串。这三个方法都支持第二个参数,表示开始搜索的位置。


6.startsWith():返回布尔值,表示参数字符串是否在源字符串的头部。这三个方法都支持第二个参数,表示开始搜索的位置。

7.endsWith():返回布尔值,表示参数字符串是否在源字符串的尾部。这三个方法都支持第二个参数,表示开始搜索的位置。


vars='Hello world!';s.startsWith('world',6)// trues.endsWith('Hello',5)// trues.includes('Hello',6)// false


8.repeat()  方法返回一个新字符串,表示将原字符串重复n次。

'x'.repeat(3)// "xxx"'hello'.repeat(2)// "hellohello"'na'.repeat(0)// ""



9.padStart(),padEnd()字符串补全长度的功能

   padStart()用于头部补全

   padEnd()用于尾部补全

padStart和padEnd一共接受两个参数,第一个参数用来指定字符串的最小长度,第二个参数是用来补全的字符串。

'x'.padStart(5,'ab')// 'ababx''x'.padStart(4,'ab')// 'abax''x'.padEnd(5,'ab')// 'xabab''x'.padEnd(4,'ab')// 'xaba'

如果原字符串的长度,等于或大于指定的最小长度,则返回原字符串。

'xxx'.padStart(2,'ab')// 'xxx''xxx'.padEnd(2,'ab')// 'xxx'

如果用来补全的字符串与原字符串,两者的长度之和超过了指定的最小长度,则会截去超出位数的补全字符串。

'abc'.padStart(10,'0123456789')

如果省略第二个参数,默认使用空格补全长度。

'x'.padStart(4)// '  x''x'.padEnd(4)// 'x  '

字符串实际应用的一些操作

1.提取URL 中的各个GET 参数(参数名和参数个数不确定),将其按key-value 形式返回到一个json 结构中,如{a:’1′, b:’2′, c:”, d:’xxx’, e:undefined}

function serilizeUrl(url) {

var urlObject = {};

if (/\?/.test(url)) {

var urlString = url.substring(url.indexOf("?") + 1);

var urlArray = urlString.split("&");

for (var i = 0, len = urlArray.length; i < len; i++) {

var urlItem = urlArray[i];

var item = urlItem.split("=");

urlObject[item[0]] = item[1];

}

return urlObject;

}

return null;

}

2.已知有字符串foo=”get-element-by-id”,写一个function 将其转化成驼峰表示法”

function combo(msg){

var arr=msg.split("-");//[get,element,by,id]

for(var i=1;i<arr.length;i++){

arr[i]=arr[i].charAt(0).toUpperCase()+arr[i].substr(1,arr[i].length

-1);//Element

}

msg=arr.join("");//msg=” getElementById”

return msg;

}

3.找出字符串每个字符出现的个数

var str='aabbccddddd';

var objs=[];

for(var i=0;i<str.length;i++){

var flag=true;

for(var j=0;j<objs.length;j++){

if(str.charAt(i)==objs[j].name){

objs[j].count++;

flag=false;

}

}

if(flag){

objs.push({name:str.charAt(i),

count:1})

}

}

4.清除字符串空格

        1.使用正则表达式

// str = str.replace(/\s*/g,"");    //去除所有空格   

//

// str = str.replace(/^\s*|\s*$/g,"");//去除两头空格:

//

// str = str.replace( /^\s*/, “”);    //去除左空格

//

// str = str.replace(/(\s*$)/g, "");  //去除右空格:

        2.使用str.trim()方法

// var str = ' xiao ming ';

// var str2 = str.trim();  //只能去除两端的空格,不能去除中间

5.字符串中奇偶字母分别是

var str = 'asdfsadfasd';

var arr = str.split('');

var arr1 =[];

var arr2 =[];

for(var i=0;i<arr.length;i++){

if(i%2==0){

arr1.push(arr[i]);

}else{

arr2.push(arr[i]);

}

}

console.log(arr1,arr2)

6.判断一个字符中出现次数最多的字符,统计次数

var str='asjhkhdfsasasaaaasa';

var json={};

for(var i=0;i<str.length;i++){

if(!json[str.charAt(i)]){

json[str.charAt(i)]=1;

}else{

json[str.charAt(i)]++;

}

}

console.log(json);

var iMax =0;

var iIndex = '';

for(var prop in json){

if(iMax<json[prop]){

iMax=json[prop];

iIndex=prop;

}

}

console.log('出现最多的是:'+iIndex+'出现'+iMax+'次');

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,911评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,014评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 142,129评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,283评论 1 264
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,159评论 4 357
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,161评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,565评论 3 382
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,251评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,531评论 1 292
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,619评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,383评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,255评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,624评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,916评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,199评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,553评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,756评论 2 335

推荐阅读更多精彩内容