<!--
- 创建字符串
var str = 'hello'
var str1 = new String('hello')
- 访问字符串中字符
通过字符串索引号访问
'hello'
01234
str[0]
- 字符串长度- 字符个数
length属性
str.length
- 字符串遍历- 访问字符串的每个字符
循环遍历
- 包装对象
基本数据类型
number string boolean undefined null
复杂数据类型
Object Array String
=> 通过点语句访问字符串属性和方法时,会转换成对象, 使用完之后又转换回来, 包装类型对象
var str = 'hello' //string
str.length
number -> Number
boolean -> Boolean
-->
</head>
<body>
<script>
var str = 'hello' // 字面量方式
// var str1 = new String('hello') //构造函数方式
// var obj = {}
// var obj1 = new Object()
// var arr = []
// var arr1 = new Array()
// console.log(str, ' str1 ',str1);
// console.log( str[1] );
console.log('字符串长度 ', str.length);
for(var i = 0; i < str.length; i++){
console.log(str[i]);
}
<!--
字符串常用方法:
charAt(索引号)
=> 返回指定索引位置的字符
indexOf(字符)
=> 返回字符所在索引号
=> 如不存在返回-1
lastIndexOf(字符)
=> 返回最后一个字符所在索引号
=> 如不存在返回-1
substring(起始索引号,结束索引号)
=> 返回起始索引号和结束索引号之间的子字符串,不包括结束索引字符
substring(起始索引号)
=> 返回从起始索引号开始后面所有字符串
substr(起始索引号,字符个数)
=> 返回从起始索引位置开始指字符个数的子字符串
replace(字符串1,字符串2)
=> 用后面的字符串2替换前面的字符串1
split('分割符')
=> 分割字符串,将分割之后的字符存入数组返回
concat('拼接字符串')
=>拼接字符串返回
trim()
=> 方法删除字符串两端的空白符
=> 返回去掉空格的新字符
-->
</head>
<body>
<script>
var str = 'hello'
//01234
// var c1 = str.charAt(1)
// console.log('c1 :',c1);
var index = str.indexOf('l')
console.log('index :', index);
var lastIndex = str.lastIndexOf('l')
console.log('lastIndex :', lastIndex);
var sub1 = str.substring(1, 3)
console.log('sub1 :', sub1);
var sub2 = str.substring(1)
console.log('sub2 :', sub2);
//示例1 ?所在索引位置, 在使用substring截取
var url = 'http://www.baidu.com?username=admin' //username=admin
var index1 = url.indexOf('?')
var sub3 = url.substring(index1 + 1)
console.log('sub3 :', sub3);
var sub4 = str.substr(1, 3)
console.log('sub4 :', sub4);
var str = "Visit Microsoft!"
var sub5 = str.replace('Visit', "school")
console.log('sub5 :', sub5); // school Microsoft!
var str1 = 'javascript-html-css'
var arr = str1.split('-')
console.log('arr :', arr); // ['javascript', 'html', 'css']
var str = 'hello'
var newStr = str.concat('world')
console.log('newStr ', newStr);
var s1 = ' admin '
console.log(s1.length, 's1 :', s1.trim().length);
var url1 = 'http://www.baidu.com'
var isOk = url1.startsWith('http')
console.log('isOk :', isOk);
var isOk1 = url1.endsWith('com')
console.log('isOk1 :', isOk1);
var s2 = 'hello'
var str2 = s2.toUpperCase() // HELLO
console.log('str2 ', str2);
var s3 = 'HELLO'
var str3 = s3.toLowerCase() // hello
console.log('str3 ',str3);
// if(str.toLowerCase() == 'hello'){
// }
练习
/*
1. 反转字符串 abcdefg => gfedcba
2. 已知字符串 'abcefMMaveqeripMMaeererMMda' 替换大字MM为*号 'abcef**aveqerip**aeerer**da'
3. 用javascript编程实现,字符串分割返回数组, 'html-css-javascript'=>['html','css','javascript']
*/
/*
1. 反转字符串 abcdefg => gfedcba
思路: 从最一个字符串开始往前面遍历,将字符进行拼接
*/
function reverseStr() {
var str = 'abcdefg' // => 'gfedcba'
// 0123456
var newStr = ''
var len = str.length //7
for (var i = len - 1; i >= 0; i--) { //i:6,5
var item = str.charAt(i) //item: g, f
newStr = newStr + item // 'g'+'f' 'gf'
}
console.log(newStr);
}
// reverseStr()
/*
var arr = [a,b,c,d,e,f,g]
arr.reverse()
*/
function reverseStrTwo() {
var str = 'abcdefg' // => 'gfedcba'
var arr = str.split('') //字符串->数组
arr.reverse() //反转
var newStr = arr.join('') //数组->字符串
console.log(newStr);
}
// reverseStrTwo()
/*
过滤敏感词
['xx','yy','MM']
2. 已知字符串 'abcefMMaveqeripMMaeererMMda' 替换大字MM为*号 'abcef**aveqerip**aeerer**da'
分析: replace('MM','**')
判断字符中没有某个字符
str.indexOf('MM') == -1
*/
function replaceStr() {
//str.replace('MM', '**') // 'abcef**aveqeripMMaeererMMda'
// newStr = newStr.replace('MM','**') //abcef**aveqerip**aeererMMda
// newStr = newStr.replace('MM','**')
var str = 'abcefMMaveqeripMMaeererMMda'
while(str.indexOf('MM') != -1){
str = str.replace('MM','**') // 'abcef**aveqerip**aeerer**da'
}
console.log(str);
}
// replaceStr()
function replaceStrTwo(){
var str = 'abcefMMaveqeripMMaeererMMda' // '[abcef, aveqerip, aeererMMda]'
var arr = str.split('MM')
var newStr = arr.join('**')
console.log('newStr :',newStr);
}
replaceStrTwo()