JavaScript 字符串对象

JavaScript 字符串对象

字符串对象的使用

字符串对象使用new String()来创建,在String构造函数中传入字符串,这样就会在返回的字符串 对象中保存这个字符串。

var str = new String('送你一朵小红花')
console.log(str)
console.log(str.length);//输出结果为:7

// 看不到常见的属性和方法
var str1 = '送你一朵小红花'
console.log(str1)

根据字符返回位置

字符串对象提供了用于检索元素的属性和方法,字符串对象的常用属性和方法如下:

方法功能描述
indexOf(‘要查找 的值’,开始的位置)返回指定内容在原字符串中的位置, 如果找不到就返回 -1;开始的位置是 index 索引号;
参数2可选,规定在字符串中开始检索的位置。它的合法取值是 0 到 string Object.length - 1。如省略该参数,则将从字符串的首字符开始检索。
lastIndexOf(‘要 查找的值’,开始 的位置)从后往前找,只找第一个匹配的,如果没有找到匹配字符串则返回 -1;参数2可选,规定在字符串中开始检索的位置。它的合法取值是 0 到 stringObject.length - 1。如省略该参数,则将从字符串的最后一个字符处开 始检索。
// indexOf:参数1:要搜索的子字符串;参数2:可选
var str = new String('送你一朵小红花,送你一朵小红花');
// 查找 花 首次出现的位置
var res = str.indexOf('花');
// 查找 花 从第七个位置查找 花 ,第一次出现的位置
var res2 = str.indexOf('花', 7);

console.log(str);
console.log(str.length);//7
console.log(res);//输出结果:6
console.log(res2);//输出结果:14

// lastIndexOf:参数1:要搜索的子字符串;参数2:可选
var str1 = new String('to be or not to be');
// 查找 e 从最后一个字符开始,第一次出现的位置
var res1 = str1.lastIndexOf('e');
// 查找 e 从第8个位置开始倒数,第一次出现的位置
var res3 = str1.lastIndexOf('e', 8);
console.log(str1);
console.log(str1.length);//15
console.log(res1);//输出结果:17
console.log(res3);//输出结果:4

注意:

  • indexOf和lastIndexOf都区分大小写

根据位置返回字符

字符串对象提供了用于获取字符串中的某一个字符的方法。方法如下:

成员作用
charAt(index)获取index位置的字符,位置从0开始计算
charCodeAt(index)获取index位置的字符的ASCII码
str[index]获取指定位置处的字符(HTML5新增)和charAt等效
var str = 'andy';
// 获取index位置的字符
console.log(str.charAt(0));//输出的结果为;a

// 获取index位置的字符的ASCII码
console.log(str.charCodeAt(0));//输出结果为:97(a的ASCII码是97)
for (var i = 0; i < str.length; i++) {
    // 获取指定位置处的字符
    console.log(str[i]);
}

案例:统计出现最多的字符和次数

案例需求:使用charAt()方法通过程序来统计字符串中出现最多的字符和次数。

for (var i = 0; i < str.length; i++) {
		// 3. 利用chars保存字符串中的每一个字符
		var chars = str.charAt(i);
		console.log(chars);
		// 4. 利用对象的属性来方便查找元素
		// obj[chars]获取对象的属性的属性值
	if (obj[chars] != true) {//如果没有获取到当前字符串,值为undefined(转为布尔值为false)
		obj[chars] = 1;//给当前对象的属性对应的属性值赋值为1
	} else {
		obj[chars]++; //如果获取到了当前字符串,即对应的属性值+1
	}
}
console.log(obj);
// 2. 统计出现最多的字母
var max = 0; // 保存出现次数最大值
var maxStr = ''; // 保存出现次数最多的字符
// 2.1 遍历对象的属性和方法
for (var key in obj) {
	// 2.2 将对象中属性的值和max进行比较
	if (obj[key] > max) {
		max = obj[key];
		maxStr = key
	}
}
console.log('出现最多的字符是:' + maxStr + ' ,共出现了' + max + '次')

字符串操作方法

字符串对象提供了一些用于截取字符串、连接字符串、替换字符串的属性和方法。字符串对象的 常用属性和方法如下:

方法作用
concat(str1, str2, str3…)concat() 方法用于连接两个或多个字符串。拼接字符串,等效于+,+更常用 该方法没有改变原有字符串,会返回连接两个或多个字符串新字符串。
slice(start,[ end])截取从start位置到end(不包含end)位置之间的一个子字符串 可提取字符串的某个部分,并以新的字符串返回被提取的部分
substring(start[, end])截取从start位置到end位置之间的一个子字符串,基本和slice相同,但是不 接收负值
substr(start[, length])截取从start位置开始到length长度的子字符串 从起始索引号提取字符串中指定数目的字符
toLowerCase()获取字符串的小写形式
toUpperCase()获取字符串的大写形式
split([separator[, limit])使用separator分隔符将字符串分隔成数组,limit用于限制数量 separator可选。 limit可选。该参数可指定返回的数组的最大长度。如果设置了该参数,返回 的子串不会多于这个参数指定的数组。如果没有设置该参数,整个字符串都 会被分割,不考虑它的长度。
replace(str1, str2)使用str2替换字符串中的str1,返回替换结果,只会替换第一个字符
var str = 'HelloWord';
// concat
var res = str.concat('!!');
console.log(res);//HelloWord!!

// slice
var res1 = str.slice(1, 5);
console.log(res1); //ello

// substring
var res2 = str.substring(3);//截取从下标为3开始,之后的内容
console.log(res2);//loWord
var res3 = str.substring(3, 7);//截取从下标为3开始,到7结束的内容(不包含7)
console.log(res3);//loWo

// substr
var res4 = str.substr(2, 5);
console.log(res4);//lloWo

// toLowerCase
var res5 = str.toLocaleLowerCase();
console.log(res5);//helloword

// toUpperCase
var res6 = str.toLocaleUpperCase();
console.log(res6);//HELLOWORD

// split
var str1 = 'How are you doing today?'
var res7 = str1.split(' ');
console.log(res7);// ['How', 'are', 'you', 'doing', 'today?']
var res8 = str1.split();
console.log(res8);//['How are you doing today?']
var res9 = str1.split(' ', 3);
console.log(res9);// ['How', 'are', 'you']

// replace
var res10 = str1.replace(' ', ',');
console.log(res10);//How,are you doing today?

案例:判断用户名是否合法

案例需求:用户名长度在3~10范围内,不能出现敏感词admin的任何大小写形式。

var res = prompt('请您输入用户名')
if (res.length < 3 || res.length > 10) {
	alert('用户名长度为3—10位,请您重新输入')
} else if (res.toLocaleLowerCase().indexOf('admin') != -1 ||
res.toUpperCase().indexOf('admin') != -1) {
	alert('不能出现敏感词admin')
} else {
	alert('恭喜您,该用户名可以使用');
}
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值