JavaScript 之 String 对象
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 对象的更多相关文章
- JavaScript中String对象的match()、replace() 配合正则表达式使用
正则表达式由来已久,查找替换功能非常强大,但模板难记复杂. JavaScript中String对象的match().replace()这2个方法都要使用正则表达式的模板.当模板内容与字符串不相匹配时, ...
- JavaScript中String对象的方法介绍
1.字符方法 1.1 charAt() 方法,返回字符串中指定位置的字符. var question = "Do you like JavaScript?"; alert(ques ...
- Javascript中String对象的的简单学习
第十一课String对象介绍1:属性 在javascript中可以用单引号,或者双引号括起来的一个字符当作 一个字符对象的实例,所以可以在某个字符串后再加上.去调用String 对象 ...
- Javascript数组,String对象,Math对象,Date对象,正则表达式
标题栏的滚动<html><head><title>山西众创金融</title></head>function init(){ //1.拿到标 ...
- JavaScript:String 对象
ylbtech-JavaScript:String 对象 1.返回顶部 String 对象 String 对象用于处理文本(字符串). 创建 String 对象的语法: new String(s); ...
- JavaScript 字符串(String)对象
String 对象 String 对象用于处理文本(字符串). 创建 String 对象的语法: new String(s); String(s); 参数 参数 s 是要存储在 String 对象中或 ...
- JavaScript的String对象
1.创建String对象 Html标签的格式编排方法:可以将String对象的字符串内容输出成对应的html标签. 示例: var str = "JavaScript程序设计"; ...
- javascript之String对象
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- JavaScript 字符串(String)对象的方法
anchor() 描述:用于创建 HTML 锚 原型:stringObject.anchor(anchorname) 用法: <script> var txt="Hello wo ...
随机推荐
- css字体名称中英文对照表
华文细黑:STHeiti Light [STXihei] 华文黑体:STHeiti 华文楷体:STKaiti 华文宋体:STSong 华文仿宋:STFangsong 俪黑 Pro:LiHei Pro ...
- Json、Pickle
目录 Json pickle Json JSON是一个序列化模块,一种用于存储和交换数据的语法. JSON是用JavaScript对象表示法(JavaScript object notation)格式 ...
- windows下 zabbix agent心跳数据获取异常
模板中的心跳监控项默认是主动性的,在windows下直接装上客户端后,如果不协调时间,可能会出现心跳数据异常, 因为是主动式的监控,agent上的数据主动的推送到server上,但是从server上看 ...
- PATB1048数字加密
关于代码都是可以在PAT上跑通的 自己是在VS2017上写的,所以会有语句system("pause");,表示暂定方便查看结果. *在一个是VS2017中使用scanf会报错,所 ...
- nuxtjs如何通过路由meta信息控制路由查看权限
我们知道NUXTJS可以通过路由中间件进行路由鉴权,中间件允许您定义一个自定义函数运行在一个页面或一组页面渲染之前. 但是我在实际使用过程中发现,中间件只有在路由跳转到路由中时才会进入,而在强制刷新网 ...
- (近万字)一篇文章带你了解HTML5和CSS3开发基础与应用-适合前端面试必备
作者 | Jeskson 来源 | 达达前端小酒馆 HTML5和CSS3开发基础与应用,详细说明HTML5的新特性和新增加元素,CSS3的新特性,新增加的选择器,新的布局,盒子模型,文本,边框,渐变, ...
- [转]Jumpserve跳板机的生产环境应用
Jumpserver是国内一款开源的轻便的跳板机系统,他们的官网:http://www.jumpserver.org/ 使用这款软件意在提高公司内部登录生产环境服务器的便捷性,权限分配细化,以及后台管 ...
- 【C/C++开发】C++11 并发指南三(std::mutex 详解)
本系列文章主要介绍 C++11 并发编程,计划分为 9 章介绍 C++11 的并发和多线程编程,分别如下: C++11 并发指南一(C++11 多线程初探)(本章计划 1-2 篇,已完成 1 篇) C ...
- cad.net 合并图层错误 ctrl+u出错 !dbenti.cpp@3310:eWasErased错误
(左边这段代码的两个事务是单独的事务,没有被另一个大的事务包裹) ...
- 读《PMI 分析手册》
目录 读<PMI 分析手册> 官方 PMI 基本概况 官方制造业 PMI 官方非制造业 PMI 综合 PMI 产出指数 PMI 分析框架 PMI 与经济周期 官方 PMI 分析 参考研报 ...