String 对象

  之前学习的是 基本数据类型 String 类型,现在讨论的是 String对象(包装类型)。

String的特点:字符串的不可变性。

var str = 'abc';
str = 'hello';

    分析上面两行代码,起初给 str 赋值为 'abc'。当重新给 str 赋值的时候,常量 ‘abc’ 不会被修改,依然在内存中。

   重新给字符串赋值,会重新在内存中开辟空间,这个特点就是字符串的不可变。

   注意:由于字符串的不可变,在大量拼接字符串的时候会有效率问题。

创建字符串对象

var str = new String('Hello World');      // 通过构造方法来创建字符串对象

  

常用方法

  注意:字符串的所有的方法,都不会修改字符串本身(字符串是不可变的),操作完成会返回一个新的字符串。

  1、字符方法

charAt()                     // 获取指定位置处字符
charCodeAt() // 获取指定位置处字符的 ASCII 码
str[0] // HTML5 的方法,IE8+支持,同 charAt() 方法

  2、字符串操作方法

concat()                     // 拼接字符串,等效于+,+更常用
slice() // 从 start位置开始,截取到 end 位置,end 取不到
substring() // 返回一个字符串在开始索引到结束索引(不包括)之间的一个子集, 或从开始索引直到字符串的末尾的一个子集。
substr(index,length) // 返回一个字符串中从指定位置开始到指定字符数的字符(length省略,到字符串末尾)

  3、位置方法

indexof()                    // 返回调用它的 String 对象中第一次出现的指定值的索引,如果没有,返回 -1
lastIndexof() // 返回指定值在调用该方法的字符串中最后出现的位置,如果没找到则返回 -1,从该字符串的后面向前查找

  4、去除空白

trim()                       // 只能去除字符串前后的空白

  5、大小写转换方法

to(Local)UpperCase()         // 转换为(本地)大写
to(Local)LowerCase() // 转换为(本地)小写

  6、其他方法

search()                     // 返回正则表达式在字符串中首次匹配项的索引;否则,返回 -1
replace(regexp,substr) // 返回一个由替换值替换一些或所有匹配的模式后的新字符串。模式可以是一个字符串或者一个正则表达式,替换值可以是一个字符串或者一个每次匹配都要调用的回调函数
split()                      // 指定的分隔符字符串将一个String对象分割成字符串数组
fromCharCode() // 返回由指定的UTF-16代码单元序列创建的字符串(将 ASCII 码转换为字符串)

  

案例:

  1、查找字符串中所有o出现的位置。

 var s = 'abcoefoxyozzopp';
var array = [];
do {
var index = s.indexOf('o', index + 1);
if (index != -1) {
array.push(index);
}
} while (index > -1);
console.log(array);

  2、把字符串中所有的o替换成!

 var s = 'abcoefoxyozzopp';
var index = -1;
do {
index = s.indexOf('o', index + 1); if (index !== -1) {
// 替换
s = s.replace('o', '!');
}
} while(index !== -1);
console.log(s);

  3、判断一个字符串中出现次数最多的字符,统计出现次数

   var s = 'abcoefoxyozzopp';
var ch;
// 此字符出现的次数
var num;
// 记录字符串中每一个字符出现的次数
var o = {}; for (var i = 0; i < s.length; i++) {
var item = s.charAt(i);
if (o[item]) {
// 已经有该属性,+1
o[item]++;
} else {
// 对象中没有该属性
o[item] = 1;
}
} // 2 求最大值 并且找到次数最多的字符
// 假设最大值是1
num = 1;
for (var key in o) {
if (num < o[key]) {
// 最多的次数
num = o[key];
// 次数最多的字符
ch = key;
}
} console.log(num);
console.log(ch);

  4、获取 url 后面的参数

 // 获取url后面的参数
function getParams(url) {
// 获取? 后面第一个字符的索引
var index = url.indexOf('?') + 1;
// url中?后面的字符串 name=zs&age=18&a=1&b=2
var params = url.substr(index);
// 使用& 切割字符串 ,返回一个数组
var arr = params.split('&');
var o = {};
// 数组中每一项的样子 key = value
for (var i = 0; i < arr.length; i++) {
var tmpArr = arr[i].split('=');
var key = tmpArr[0];
var value = tmpArr[1]; o[key] = value;
}
return o;
}
var url = 'http://www.baidu.com/login?name=zs&age=18&a=1&b=2';
var obj = getParams(url);
console.log(obj); console.log(obj.name);
console.log(obj.age);

JavaScript 之 String 对象的更多相关文章

  1. JavaScript中String对象的match()、replace() 配合正则表达式使用

    正则表达式由来已久,查找替换功能非常强大,但模板难记复杂. JavaScript中String对象的match().replace()这2个方法都要使用正则表达式的模板.当模板内容与字符串不相匹配时, ...

  2. JavaScript中String对象的方法介绍

    1.字符方法 1.1 charAt() 方法,返回字符串中指定位置的字符. var question = "Do you like JavaScript?"; alert(ques ...

  3. Javascript中String对象的的简单学习

    第十一课String对象介绍1:属性    在javascript中可以用单引号,或者双引号括起来的一个字符当作    一个字符对象的实例,所以可以在某个字符串后再加上.去调用String    对象 ...

  4. Javascript数组,String对象,Math对象,Date对象,正则表达式

    标题栏的滚动<html><head><title>山西众创金融</title></head>function init(){ //1.拿到标 ...

  5. JavaScript:String 对象

    ylbtech-JavaScript:String 对象 1.返回顶部 String 对象 String 对象用于处理文本(字符串). 创建 String 对象的语法: new String(s); ...

  6. JavaScript 字符串(String)对象

    String 对象 String 对象用于处理文本(字符串). 创建 String 对象的语法: new String(s); String(s); 参数 参数 s 是要存储在 String 对象中或 ...

  7. JavaScript的String对象

    1.创建String对象 Html标签的格式编排方法:可以将String对象的字符串内容输出成对应的html标签. 示例: var str = "JavaScript程序设计"; ...

  8. javascript之String对象

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. JavaScript 字符串(String)对象的方法

    anchor() 描述:用于创建 HTML 锚 原型:stringObject.anchor(anchorname) 用法: <script> var txt="Hello wo ...

随机推荐

  1. [codevs1286]郁闷的出纳员

    题目描述 Description OIER公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的工资.这本来是一份不错的工作,但是令人郁闷的是,我们的老板反复 ...

  2. Margin和padding失效

    太久不写原生果然不行,Margin和padding对div有效,对span失效,原因就不解释了(元素性质,块状之类的)

  3. PYTHON读取EXCEL内容再转变成HTML添加到OUTLOOK中

    需求 读取excel里的表格里的内容,然后打开本机的outlook.把excel里的内容添加到正文里,注意.这里是要添加到正文!正文!正文!而不是添加到附件里 设计思路 1.excel处理 打开exc ...

  4. 洛谷 P1508

    P1508 所属知识点:DP 主要题意: 就是求一个矩阵从下边走到上边,可以走自己前方或左前方或右前方. 问走到上边一共经过的路径和. 类型题:P1216 解题思路: 参考上边的类型题(因为比较简单) ...

  5. P3258 [JLOI2014]松鼠的新家题解

    题目描述 松鼠的新家是一棵树,前几天刚刚装修了新家,新家有\(n\)个房间,并且有\(n-1\)根树枝连接,每个房间都可以相互到达,且俩个房间之间的路线都是唯一的.天哪,他居然真的住在"树& ...

  6. TCGA简易下载工具 SangerBox

    下载地址:http://sangerbox.com/ https://shengxin.ren/article/208 Understanding TCGA mRNA Level3 analysis ...

  7. this与bind(this) (es5新增)

    this与bind(this) this this指向的是当前函数的作用域(对象实例),有如下的例子 const app = { name: 'xiaoming', log() { console.l ...

  8. Jenkins工具学习(一)

    Jenkins的下载及安装 Jenkins下载地址:https://jenkins.io/download/ 下载后的直接解压安装 根据自己的喜好选择一种方式安装: 如果选择推荐安装,会自动下载一些插 ...

  9. 2019 ICPC 银川站

    I. Base62(高精度进制转换) 比赛当时雷菊苣和队长俩人拿着大数板子摸了一百多行(然后在缺少大数板子的情况下雷菊苣一发过了orz) 今天补题随便摸了个高精度进制转换的板子交上去就过了还贼短,, ...

  10. 在C++中调用FFTW

    FFTW是一个可以进行可变长度一维或多维DFT的开源C程序库,是目前最快的FFT算法实现. 本文简述了在Windows平台上,如何在C++中调用FFTW,所使用的IDE为Visual Studio 2 ...