JavaScript中字符串的一些操作

字符串的一些操作

  • 字符串不可变:
    • 旧的字符串赋值在一个变量上,给变量重新赋值新的字符串(完全新的字符串,或者拼接后字符串),旧的字符串不是被覆盖;在内存的游离状态;
    • 所以尽量避免大量使用字符串的拼接;这个算性能优化的一点;
  • 查找字符:
  • indexOf:
// 作用:查询字符所在字符串的位置;
// 参数:查询字符
// 返回:下标,若没有查询到,返回-1;
var str = '相顾无言,唯有泪千行';
var key = str.indexOf("苏轼");
console.log(key);
// 使用场景:查询是否有敏感字;
  • lastIndexOf 用法和indexOf一样,只不过是从后面开始找
  • charAt:
// 这个方法用于获取字符串中位于指定位置的字符
var str = '我爱中华人民共和国';
console.log(str.charAt(2));
  • charCodeAt :
// 这个方法用于获取字符串中位于指定位置的字符的ASCII码
var str = 'abcdef'
console.log(str.charCodeAt(0));
  • String-split-案例
 // 案例:解析地址`b.com?id=01&name=02`中的参数
 // 解析:id=01&name=02  变成对象  {id:01,name:02}
 var str = "b.com?id=01&name=02";
 var arr = str.split("?");
 // console.log(arr);得到的是一个数组,数组中有两个值(问号前后的值)
 str = arr[1];//选择数组中的第二个值
 // console.log(str);
 var arr_1 = str.split("&");
 // console.log(arr_1);  ["id=1", "name=2"]
 // 遍历:
  var obj = {};
  var one, key, val;
  for (var i = 0; i < arr_1.length; i++) {
    // 其中的一样被分隔为数组  ["id", "1"]
    one = arr_1[i].split("="); // 
    // 数组中第一项:对象中属性名  键
    key = one[0]; // id
    // 数组中第二项:对象中属性值  值
    val = one[1]; // "1"
    // 对象上设置 对象[属性名]
    obj[key] = val; // obj["id"] = "1";
  }
  console.log(obj);
  • String-拼接与截取
// var str = "abcdefghjk";
// concat 
// 作用:可以与多个字符串进行拼接  
// 参数:拼接的数据
// 返回:拼接后的字符串;
// var res = str.concat("--------", '88888');
// console.log(str, res);

// ------------------------------------------------------截取
// substring
// 作用:截取字符串
// 参数:第一个参数:截取开始的下标(包括);第二个参数:截取结束的下标(不包括)
// 返回:截取出来的字符串
// var res = str.substring(0, 3);
// console.log(str, res);

// slice
// 作用:截取字符串;
// 参数:第一个参数:截取开始的下标(包括);第二个参数:截取结束的下标(不包括)
// 返回:截取出来的字符串
// var res = str.slice(0, 3);
// console.log(str, res);

// 特别:参数可以设置负数,遇见负数,内部(负数+字符串的长度--->值 下标)
var str = "abcdefghjk";
// var res = str.slice(-6, 7);   // -6 + 10
// var res_1 = str.slice(4, 7);
// console.log(res, res_1);


// substr
// 作用:截取字符串
// 参数:第一个参数,开始下标。第二个参数,截取的个数;
// 返回:被截取新字符串,没有对原字符串修改;
var res = str.substr(2, 3);
console.log(res);


//js中substr和substring都是截取字符串中子串,非常相近,可以有一个或两个参数。

//语法:substr(start [,length]) 第一个字符的索引是0,start必选 length可选

   //substring(start [, end]) 第一个字符的索引是0,start必选 end可选

//相同点:当有一个参数时,两者的功能是一样的,返回从start指定的位置直到字符串结束的子串

//var str = "hello Tony";

//str.substr(6);  //Tony

//str.substring(6); //Tony

 

//不同点:有两个参数时

//(1)substr(start,length) 返回从start位置开始length长度的子串

//“goodboy”.substr(1,6);   //oodboy

//【注】当length为0或者负数,返回空字符串

//(2)substring(start,end) 返回从start位置开始到end位置的子串(不包含end)

//“goodboy”.substring(1,6);  //oodbo

//【注】:
//(1)substring 方法使用 start 和 end 两者中的较小值作为子字符串的起始点

//(2)start 或 end 为 NaN 或者负数,那么将其替换为0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值