/*P79-字符串-定义与转义
//编程里面最常用的类型,用来显示文本信息
//之前有很多例子,这里统一看一下字符串相关api
//方式1:直接使用字面值
//单引号或双引号括起来的
//如果安装prettier插件的话,单引号会被改成双引号
var str='hello'
console.log(str);
var str1="world!";
console.log(str2);
console.log(str+str1);
//string的构造函数来创建string对象
//创造出来的是对象形式的字符串
var str2 = new String('你好');
console.log(str2);//
/*
//老师说它有2个元素,一个是你,一个是好
String {"你好"}
0: "你"
1: "好"
length: 2
__proto__: String
[[PrimitiveValue]]: "你好"
*/
/** */
/*转义字符
//键盘打不出或者编程代码有冲突的字符
//以斜杠开头
//本行语句错误,str = "他说:"我们出去玩吧"";
//改写:(如果安装prettier插件,下面这个写法会自动变成双嵌单引号嵌套样式)
str = "他说:\"我们出去玩吧!\"";
console.log(str);//他说:"我们出去玩吧!"
//或者单双引号嵌套
str = '他说:"我们出去玩吧!"';
console.log(str);//他说:"我们出去玩吧!"
str = "他说:'我们出去玩吧!'";
console.log(str);//他说:'我们出去玩吧!'
//其实,中文的话,我们使用中文字符引号是不会和英文引号冲突的
str = '他说:“我们出去玩吧!”';
console.log(str);//他说:“我们出去玩吧!”
str = "他说:“我们出去玩吧!”";
console.log(str);//他说:“我们出去玩吧!”
//反斜杠本身的话,写两个反斜杠就可以了。
str = '他说\\我们出去玩!';
console.log(str);//他说\我们出去玩!
//换行使用\n
str = '他说\n我们出去玩!';
console.log(str);
//他说
//我们出去玩!
//tab使用\t
str = '他说\t“我们出去玩!”';
console.log(str);//他说 “我们出去玩!”【前面第一次粘贴显示1个空格宽度,后面第二次粘贴显示4个空格宽度】他说 “我们出去玩!”
//他说 “我们出去玩!”【加上//就成了2个空格宽度?!】
//也可以转义unicode字符的特殊字符或中文
console.log('\u1010');//တ
console.log('\u4310');//䌐
//\n和\r的区别,参考https://blog.csdn.net/jiang7701037/article/details/80754163
/** */
/*P80-字符串-遍历
//使用for配合charAt()
//for-of
str = '他说\t“我们出去玩!”';
for(let i = 0; i<str.length; i++){
console.log(str.charAt(i));
}
for(c of str){
console.log(c);
}
/*
index.js:80 他
index.js:80 说
index.js:80 //前面的空位置是\t的位置。
index.js:80 “
index.js:80 我
index.js:80 们
index.js:80 出
index.js:80 去
index.js:80 玩
index.js:80 !
index.js:80 ”
*/
/** */
/*P81-字符串-裁切
//和数组的slice一致,夹子一样的取数。
//参数顺序只能是小大,不能是大小
//可以负数,
//只有一个参数表示开始,代表从结束在字符末尾
var str= 'This is a long string......';
console.log(str.slice(0,4));//This
console.log(str.slice(4));// is a long string......
console.log(str.slice(0,-1));//This is a long string.....
console.log(str.slice(-6,-1));//.....
console.log(str.slice(4,1));//(无)
//substring参数注意:负数和其他字符会当做0,参数大小顺序会调整为小大的顺序
//substring类似函数中,只推荐使用substring
console.log(str.substring(0,4));//This
console.log(str.substring(4));// is a long string......
console.log(str.substring(0,-1));//(无)
console.log(str.substring(-6,-1));//(无)
console.log(str.substring(4,1));//his
/** */
/*P82-字符串拼接
//可以用+或concat()方法
//MDN推荐使用+,性能会好一些
var str1= 'hello ';
var str2= 'world!';
var str3= 'haha';
console.log(str1+str2);//hello world!
console.log(str1.concat(str2));//hello world!
console.log(str1.concat(str2).concat(str3));//hello world!haha
/** */
/*P83-字符串-大小写转化
console.log('hello'.toUpperCase());//HELLO
console.log('WORLD'.toLocaleLowerCase());//world
//发现老师的例子,方法中一个带Locale一个不带,于是对应测试如下:
console.log('hello'.toLocaleUpperCase());//HELLO
console.log('WORLD'.toLowerCase());//world
/*从上面的例子看到,toUpperCase()和toLocaleupperCase()是一样的,
通过资料https://blog.csdn.net/uuihoo/article/details/79695148
可知是为了处理特殊情况,比如土耳其语对于Unicode的大小转化有特殊规则。
toLocaleUpperCase()和toLocaleLowCase()可以保证转换正确。
*/
/** */
/*P84-去除字符串首位空格
//使用trim()方法,只能去除首尾空格,不能中间空格
var str=' hello world ';
console.log(str.trim());//hello world//中间空格保留
/** */
/*P85-模板字符串*/
//可以原样把字符串打印出来,
//支持使用变量替换字符串中的占位符
/*简单例子,多行变量
//VH:注意`和引号一样,需要注意嵌套和转义问题
//VH:字符串内表现`的话,需要嵌套,不用嵌套需要转义
var longStr= `
Template literals are enclosed by the backtick
\`\` (grave accent) character
instead of double or single quotes.`;
console.log(longStr);
/*下面第一行空行,因为变量赋值的时候,字符串也是空了一行
Template literals are enclosed by the backtick
`` (grave accent) character
instead of double or single quotes.
*/
/** */
/*模板字符串的例子
var name ='峰华';
var str=`你好,${name}`;
console.log(str);//你好,峰华
//如果没提前定义变量会报错
var str=`你好,${myName}`;//Uncaught ReferenceError: myName is not defined
/** */
/*高级用法*/
/*老师的例子
//作为函数的参数使用`${}`
//`${}`提供参数为:第一个是${}前后字符为2个元素的数组,
//第二个参数是${}本身的值
function greeting(strings,gender){
console.log(strings);
console.log(gender);
return strings[0]+gender+strings[1];
}
var gender='M';
var result=greeting`你好,峰华${gender},早上好!`;
console.log(result);
/*
(2) ["你好,峰华", ",早上好!", raw: Array(2)]
M
你好,峰华M,早上好!
*/
/** */
/*测试多个${}的情况
//经过下面测试,第一个参数是${}分割点字符串作为元素的数组
//第二个参数开始是${}的值,多个${}依次后排
function greeting(strings,gender,stuff){
console.log(strings);
console.log(gender);
console.log(stuff);
return strings[0]+gender+strings[1]+stuff+strings[2];
}
var gender='M';
var stuff='Eggs';
var result=greeting`你好,峰华${gender},早上好!${stuff}5块钱!`;
console.log(result);
/*
(3) ["你好,峰华", ",早上好!", "5块钱!", raw: Array(3)]
M
Eggs
你好,峰华M,早上好!Eggs5块钱!
*/
/** */