美文网首页
js 字符串常用方法

js 字符串常用方法

作者: 路上灵魂的自由者 | 来源:发表于2019-01-10 15:12 被阅读6次

// js中关于字符串的一些细节知识

// 在js中所用单引号或者双引号包起来的都是字符串,每一个字符串是由零到多个字符组成。

var str = 'hahahahaha';

// str.length -> 字符串长度

str[0] //-> 'h'

str[str.length-1] //=> 'n'

str[100] //=>undefined

// 字符常中的每一个字符串都有一个自己对应位置的索引,也有类似于数组一样的length代表自己的长度

// 循环遍历输出每一项

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

    console.log(str[i])

}

// 关于字符串中常用的方法

字符串是基本数据类型,字符串的每一次操作都是值类型直接进行操作,不像数组一样是基于空间地址来操作的,所以不存在原有字符串是否改变这一说,肯定是不变的。

### "charAt/charCodeAt"

作用:charAt根据索引获取指定位置的字符,charCodeAt不仅仅获取字符,他获取的是字符对应的Unicode编码值(ASC LL码值)

参数: 索引

返回:字符或者对应的编码

```

var str = 'qwertyuiopasdfghjklzxcvbnm';

str.charAt(100)  // => ''(空字符串)

str[100]        // => undefined

str.charCodeAt(0)// => 113

String.fromCharCode(122)  // 'z'

charCodeAt返回的字符串对应的编码

String.fromCharCode返回的是编码对应的字符

```

### indexOf/lastIndexOf

和数组的indexOf/lastIndexOf一样

基于这两个方法,可以获取字符串在字符串中第一次或者最后一个出现的位置的索引,有这个字符,返回大于等于0的索引,不包含这个字符,返回的结果是-1。可以验证当前字符串是否包含某个字符。

```

var str = 'qwertyuiopasdfghjklzxcvbnm';

if(str.indexOf('@')>-1){

//=》条件成立,说明包含字符串@符号

}

```

### slice

作用:str.slice(n,m) 从索引n开始找到索引m出(不包含m), 把找到的字符串当作新字符串返回

```

var str = 'qwertyuiopasdfghjklzxcvbnm';

str.slice(1,3)  //=>we

```

### substring (字符串截取)

和slice语法一模一样,唯一的区别在于,slice支持负数索引。而substring不支持负数索引

```

var str = 'qwertyuiopasdfghjklzxcvbnm';

str.substring(1,3)  //=>we

```

### substr

也是字符串截取的方法,用法是:str.substr(n,m) 从索引n开始截取m个字符

```

var str = 'qwertyuiopasdfghjklzxcvbnm';

str.substr(1,5)  //=>werty

str.substr(-6,3) //=>xcv

```

### toUpperCase/toLowerCase

实现字母大小写转换

toUpperCase =》 小写转大写

toLowerCase =》 大写转小写

```

var str = 'QwertyuiopAsdfghjklZxcvbnm';

str.toUpperCase() //"QWERTYUIOPASDFGHJKLZXCVBNM"

str.toLowerCase()  //"qwertyuiopasdfghjklzxcvbnm"

```

### "split"

和数组中的join相对应,数组中的join是把数组每一项按照指定的连续符变为字符串,而split是把字符串按照指定的分隔符,拆分成数组中的每一项

```

var ary = [12,23,34];

var str = ary.join("+")  // 12+23+34

str.split("+")    // ["12","23","34"];

```

### "replace"

作用:替换字符串中的原有字符

参数:原有字符,要替换的新字符

返回:替换后的字符

```

把skl替换成”哈哈“

var str = 'skl2018skl';

str = str.replace("skl","哈哈");  //在使用正则的情况下,每执行一次啊replace只能替换一个

```

看str原型方法(String.prototype)

### 真实项目中的需求

```

1.时间字符串格式化

》有一个时间字符串 "2019-1-10 11:46:8",我们项基于这个字符串获取到”04月04日 16日26分“

```

/*

1.基于SPLIT按照空格把字符串拆成两部分(数组的两项)

2.左边这一部分继续以SPLIT按照杠来拆

3.右边这一部分继续以SPLIT按照冒号来拆

4.把需要的信息拼接在一起即可

*/

var str = '2019-1-10 11:46:8';

function addZero(val){

return val < 10? '0'+val: val

}

var ary = str.split(' '),

aryLeft = ary[0].split('-'), //=> ['2019','1','10']

aryRight = ary[1].split(':'); //=> [11,46,8]

var month = addZero(aryLeft[1]);

var day = addZero(aryLeft[1]);

var hours = addZero(aryRight[1]);

var minutes = addZero(aryRight[1]);

console.log(month+"月"+day+"日"+hours+"时"+minutes+"分")

逼格高一点得

~function (pro){

    pro.formatTime = function (template){

        template = template || '{0}年{1}月{2}日 {3}时{4}分{5}秒';

        var ary = this.match(/\d+/g);

        template = template.replace(/\{(\d+)\}/g,function(){

        var n = arguments[1],

        val = ary[n] || '0';

        val < 10 ? val ='0'+val:null;

            return val

        })

    }

}(String.prototype)

### URL地址问好传参解析

> 有一个url地址"http://www.baidu.con/?lx=1&anme=AA&sex=man";地址问好后面的内容是我们需要解析出来的参数信息

{

    lx:1,

    name: 'AA',

    sex: 'man'

}

/*

* 1.先找到问号

* 2.首先我们需要验证是否存在#哈希值,存在我们从问号开始截取到#,不存在我们直接截取到字符串末尾

* 3.以&符进行拆分(数组)

* 4.遍历数组中的每一项,把每一下再按照=进行拆分,把拆分后的第一项作为对象的属性名。第二项作为属性值进行存储

*/

var str = 'http://www.baidu.con/?lx=1&anme=AA&sex=man#teacher'

//=》#后面的称为哈希(HASH)值,这个值可能有可能没有,有的话我们截取的时候需要过滤掉

function strXI(str){

    // 获取

    var indexASK = str.indexOf("?");

    var indexWELL = str.indexOf('#');

    var indexStr = '';

    if(indexWELL>-1){

        //=>存在#

        indexStr = str.substring(indexASK+1,indexWELL)

    }else{

        indexStr = str.substr(indexASK+1)

    }

    var ary = indexStr.split('&')

    var obj = {}

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

        var item = ary[i];

        var itemAry = item.split('=');

        obj[itemAry[0]] = itemAry[1]

    }

    return obj

}

console.log(strXI(str))

相关文章

  • JavaScript 字符串

    js字符串,js字符串的概述和声明,js字符串的特性,js字符串的常用方法,js字符串的拓展方法,js字符串的案例...

  • js基础了解

    js数组常用遍历方法使用: js数组常用操作方法使用: 基本逻辑运算: 基本字符串操作方法:

  • js 常用方法总结

    字符串的常用属性,概览 Array对象的方法; 详细js数组常用方法大全

  • JS截取与分割字符串常用技巧总结

    JS截取与分割字符串常用技巧总结 本文实例讲述了JS截取与分割字符串的常用方法。分享给大家供大家参考,具体如下: ...

  • js字符串、数组、对象的学习

    一。字符串 1.20个常用的JavaScript字符串方法2.js字符串方法总结3.Javascript中字符串方...

  • js常用math方法

    Math常用方法 js常用数据类型转换 toString():转换成字符串;String():吧unll、unde...

  • 20个常用的JavaScript字符串方法

    摘要: 玩转JS字符串。 原文:JS 前20个常用字符串方法及使用方式 译者:前端小智 Fundebug经授权转载...

  • 字符串截取

    js字符串截取函数常用的三个方法slice(start,[end]) substring(start,[end])...

  • JS截取与分割字符串常用技巧总结

    本文实例讲述了JS截取与分割字符串的常用方法。分享给大家供大家参考,具体如下: JS截取字符串可使用 substr...

  • JS截取与分割字符串的常用方法

    本文实例讲述了JS截取与分割字符串的常用方法。分享给大家供大家参考,具体如下: JS截取字符串可使用 substr...

网友评论

      本文标题:js 字符串常用方法

      本文链接:https://www.haomeiwen.com/subject/vqjarqtx.html