字符串类型详解
在下面篇幅中将会用到此输出函数。
function dw(value){
document.write(value + "\<br/>")//JS不会自动换行
}
- 1、声明字符串的方式
var s = "abc";
var s1 = new String("abc")
var s2 = String("abc")
- 2、字符串拼接
- 2.1、+拼接符(可以和任意类型的数据拼接,结果都是字符串类型的)
s = "hello"
var new_s = s+10
dw(new_s)//hello10
dw(typeof new_s)
var new_s = s+true
dw(new_s)//hellotrue
dw(typeof new_s)
- 2.2、concat拼接(可以拼接多个数据)
new_s = s.concat(10,"good","nice")
dw(new_s)
- 3、获取字符串的长度
var l = new_s.length
dw(l)
- 4、获取指定位置的字符
var ch = new_s[0]
dw(ch)
ch = new_s.charAt(0)//括号中也是索引
dw(ch)
- 5、返回某个子串在字符串中第一次出现的位置
var index= new_s.indexOf()//两个参数:待查找的子串,从哪开始(默认从0开始)
//找到返回指定位置, 找不到返回-1
//例如:
var index = new_s.indexOf("o")
- 6、获取某个子串在字符串中最后出现的位置
var index = new_s.lastIndexOf()//两个参数:带查找的子串,查找的终点位置,默认在结尾
var index = new_s.lastIndexOf("m")
dw(index)
varindex = new_s.lastIndexOf("o",5)
dw(index)
-
7、获取子串
-
7.1(开始索引,结束索引)[结束索引不包含在内]
var sub_str = new_s.substring(1,4)
dw(sub_str)
- 7.2(起始位置,截取长度)
new_s = "t"+true
var sub_str = new_s.substr(1,4)
dw(sub_str)
- 7.3(开始索引,结束索引)[结束索引不包含在内]
sub_str = new_s.slice(1,4)
dw(sub_str)
- 8、将字符串中的字母转换为大写
var upper_str = new_s.toUpperCase()
dw(upper_str)
- 9、将字符串中的字母转换为小写
var lower_str = new_s.toLowerCase()
dw(upper_str)
- 10、切割字符串
s = "hello nice to meet you"
var sub_arr = s.split(" ")//切割符:可以使字母,字符串,还
dw(sub_arr)
可以是正则表达式
s = "good13lucky33"
sub_arr = s.split(/[^0-9]+/)
dw(sub_arr)
- 11、替换字符串
s="cat dog cat dog"
var replace_str = s.replace("cat","CAT")
dw(replace_str)//只换了查找到的第一个
这里先介绍一个函数(lambda 形参 : 表达式返回值):
匿名函数(一次性函数,执行完立即释放内存)
function(形参){
函数体
return 返回值
}
——>
replace_str = s.replace("cat",function(old_str, index, index, src_str){dw(old_str + "----" + index + "----" + src_str)
return " "
})
dw(replace_str)
- 12、全部替换成指定字符串(重构函数)
function cus_replace(src_str, old_str, new_str){
if(src_str.indexOf(old_str) == -1){
return src_str
}else{
var new_s = src_str.replace(old_str, new_str)
return cus_replace(new_s, old_str, new_str)
}
}
s = "cat dog dog cat cat"
var res = cus_replace(s, "cat", "CAT")
dw(res)
可变参数
Python中是*args
JS函数本身就是可变参数的
函数调用传值时 传递的实参个数可以多于形参个数的
例如:
function add_two(a,b){
return a+b
}
var res = add(123,345,567)
dw(res)//我们得到的值,依旧是123+345的结果
这是因为:在函数体中有一个属性->object类型的arguments,存放着调用这个函数时传递过来的所有实参
通过遍历arguments,我们可以得到这个函数的所有实参。
function(a,b){
dw(arguments.length);
for(var i=0;i<arguments.length;i++){
dw(arguments[i])
}
return a + b
}
运算符与流程控制语句
运算符
算术运算符
+ - * / % 自加++ 自减--
x++先运算,后++
++x 先++,后参与运算
关系运算符
> < >= <= == !=
===
== 只判断数内容是否一样 不验证类型
=== 数据和类型一致 结果为true
dw("123" == 123)
dw("123" === 123)
dw(null == undefined)
dw(null === underfined)
逻辑运算符
&& 逻辑与 || 逻辑或
逻辑与和逻辑或是有断路原则的
&& :一假全假,左边假则右边表达式不参与运算,如果后面跟着 逻辑或 直接执行逻辑或右边表达式
|| :一真全真,左边表达式成立 右边表达式不参与运算
var x = 10,y=11
var res = (x++ >=y && --y <= x || ++x >11)
dw(res)
dw(x)
dw(y)
三元运算符
条件表达式? 表达式1 :表达式2
条件表达式成立,取1的结果,否则取2的结果
赋值运算符
= += -= *= /= %=
转义符
\r \n
流程控制语句
顺序语句
分支语句
判断语句
if(条件表达式){
满足条件执行的语句
}
else{
不满足条件执行的语句
}
if(条件表达式){
满足条件执行的句
}
else if(条件表达式1){
执行语句
}
else{
}
选择语句
switch-case
shell中case
case 表达式 in:
结果1) ...
;;
JS中
switch(表达式){
case 结果1:
执行语句
break
case 结果2:
执行语句
break
default:
执行语句
break
}
表达式的结果必须是个常量 固定的值
default 当case中没有满足表达式的结果时,执行default
barek 结束选项
function dw(value){//函数dw用于将内容输出到文档页面上
document.write(value + "<br/>")//JS不会自动换行
}
var score = 70;
if(score >= 90){
dw("A")
}else if(score >=80 ){
dw("B")
}else if(score >= 70){
dw("C")
}else if(score >= 60){
dw("D")
}else{
dw("E")
}
//转化成switch - case
switch(score/10){
case 10:
dw("A")
break
case 9:
dw("A")
break
case 8:
dw("B")
break
case 7:
dw("C")
break
case 6:
dw("D")
break
default:
dw("E")
break
}
循环语句
for
for in
for(变量 in 容器){
变量是容器中元素对应的索引
}
for(;;){
}//死循环==while(true)
whiledo-while
var num=1,sum=0
while(num<=10){
sum+=num;
num++;
}
dw(sum)
//do-while
do{
dw("do内的操作")
}while(false);//先执行,后判断
do{
sum+=num;
num++;
}while(num<=10)
dw(sum)
//for
var sum=0
for(var n=1;n<=10;n++){
sum+=n
}
dw(sum)
for(var i=1,j=5;i<=100;i++,j+=5){
dw(i+"+"+j+"="+(i+j))
}
//for in
arr = [12,34,56]
for(i in arr){
dw(i)
dw(arr[i])
}