字符串用来保存文本。一个字可以,比如「酷」。课程名是一串字,比如「ArkTS基础」。账号里的符号也写在字符串里,比如 dev#01。10086 看起来是数字,加上引号之后,同样是字符串。
动画视频在《13个ArkTS字符串方法,3分钟速通》。
ArkTS 里,文本、字符、符号都用 string。没有单独的 char。
// 单个字符
let name: string = '酷';
// 多个字符
let course: string = 'ArkTS基础';
// 符号,账号
let account: string = 'dev#01';
// 文本形式的数字
let phone: string = '10086';
三种引号
字符串可以用双引号、单引号或反引号包起来。日常开发用单引号。
// 双引号
let userName: string = "张三";
// 单引号
let drinkName: string = '珍珠奶茶';
// 反引号,模板字符串
let tipMsg: string = `欢迎下单`;
转义
换行、"、反斜杠这些符号自己有含义。要原样打出来,在前面加一个反斜杠。
\n 是换行。\" 打出双引号。\\ 打出一个反斜杠。
// \n 换行,双引号字符串
let str1: string = "第1行,\n第2行。";
// \" 转义双引号,单引号字符串
let say: string = '我说:\"鸿蒙开发真有趣\"';
// \\ 转义反斜杠,模板字符串
let path: string = `c:\\software\\now\\test`;
console.log(str1);
console.log(say);
console.log(path);
str1 打成两行:第1行, 然后 第2行。。say 是 我说:"鸿蒙开发真有趣"。path 是 c:\software\now\test。
先开启预览器,再打开日志面板,按 Ctrl + S 保存,才能看到输出。后面的 console.log 也一样。
加号拼接
最直接的接法是加号。姓张,名三,加起来是张三。数字 88 也能接到字符串后面。变量一多,加号会连成一长串。
let firstName: string = '张';
let lastName: string = '三';
let fullName: string = firstName + lastName;
let score: number = 88;
let msg: string = '考试分数:' + score;
console.log('完整姓名:', fullName);
console.log('成绩提示:', msg);
模板字符串
句子里要插入变量,用反引号。变量写在 ${ } 里,可以写成多行。fullName 和 score 就是上面的张三和 88。
let isPass: boolean = score >= 60;
let info: string = `学生姓名:${fullName}
数学成绩:${score}
是否及格:${isPass}`;
console.log(info);
88 大于等于 60,isPass 是 true。日志打出三行:
学生姓名:张三
数学成绩:88
是否及格:true
length
length 是字符个数,换行也算一个。上面的 info 是 25。
用户名要卡在 6 到 20 位,就看这个数。
let strLen = info.length;
console.log('字符串长度 =', strLen);
去掉空格
复制进来的内容,首尾常多一个空格。trim 去掉首尾空格,中间的留着。中间的空格也要删,用 replace,把空格换成空字符串。正则后面的 g 表示全部换,不只换第一处。
let s1: string = ' a b c ';
console.log('前后空格去掉=' + s1.trim() + '=');
console.log('删除全部空格=' + s1.replace(/ /g, '') + '=');
第一行是 前后空格去掉=a b c=。第二行是 删除全部空格=abc=。
replace
replace(旧内容, 新内容) 换文字。不写正则时,只换第一个。同一段里要换好几处,用正则加上 g。
let cool: string = '你最帅!';
console.log(cool.replace('你', '我'));
let txt: string = 'a b b b';
console.log(txt.replace(/b/g, 'x'));
第一行打出 我最帅!。第二行三个 b 都换成了 x,是 a x x x。
截取
从身份证号里取出生日期,从网址里取一段参数,都是截取。slice 和 substring 很像。下标从 0 开始,正数从左边数。slice 可以用负数,从右边数。substring 不认负数。
下面这串是 123456789。含起始下标,不含结束下标。
let s: string = '123456789';
console.log(s);
console.log(s.slice(0, 4));
console.log(s.slice(3));
console.log(s[5]);
console.log('--' + s.slice() + '--');
console.log(s.slice(-4, -1));
console.log(s.slice(-3));
console.log(s.substring(0, 4));
console.log(s.substring(3));
console.log(s.substring(5, 2));
slice(0, 4) 是 1234。slice(3) 从下标 3 取到末尾,是 456789。s[5] 是第 6 个字符 6。slice() 不传参数,整串还回来,所以是 --123456789--。
slice(-4, -1) 从右边数。最后一位是 9,结束下标不含它,往左数到 6,得到 678。slice(-3) 从倒数第 3 个取到末尾,是 789。
substring(0, 4) 和 substring(3) 跟上面一样,是 1234 和 456789。substring(5, 2) 两个下标写反了,它会自己对调,取下标 2 到 5,得到 345。slice 不会对调。
split
刚才是切一段。要拆成好几段,用 split。水果名单按减号切开。第二个参数限制最多留下几段。接口里用逗号隔开的数据,也是这么拆。
let fruits: string = '苹果-葡萄-橘子-香蕉';
console.log(fruits.split('-') + '');
console.log(fruits.split('-', 2) + '');
数组用加号接上空字符串,会用逗号连成一行。第一行是 苹果,葡萄,橘子,香蕉。第二行是 苹果,葡萄。
查找位置
indexOf 找第一次出现的位置。找到了返回下标,找不到返回 -1。以后写判断,不等于 -1 就是找到了。lastIndexOf 从右边找,取文件后缀时常用。
let str: string = 'Welcome to ArkTS.';
console.log(str.indexOf('c') + '');
console.log(str.indexOf('e', 5) + '');
console.log(str.lastIndexOf('e') + '');
console.log(str.lastIndexOf('e', 5) + '');
console.log(str.lastIndexOf('x') + '');
c 在下标 3。从下标 5 再找 e,在 6。从右边找 e,也是 6。从下标 5 往左找 e,在 1。没有 x,返回 -1。
开头和结尾
只想知道是不是以某段开头、以某段结尾,用 startsWith 和 endsWith。结果是布尔值。链接是不是 https 开头,文件名是不是 .png 结尾,用这两个。
let sentence: string = 'I am a handsome boy.';
console.log(sentence.startsWith('I') + '');
console.log(sentence.startsWith('I', 2) + '');
console.log(sentence.endsWith('.') + '');
console.log(sentence.endsWith('.', 2) + '');
以 I 开头,是 true。从下标 2 看起,那里是 a,是 false。以句号结尾,是 true。第二个参数 2 表示只看到下标 2 之前,那一段是 I ,不以句号结尾,是 false。
大小写
toUpperCase 转大写,toLowerCase 转小写。验证码比对前先转成同一种,就不用管用户输入的大小写。
console.log(sentence.toUpperCase());
console.log(sentence.toLowerCase());
两行分别是 I AM A HANDSOME BOY. 和 i am a handsome boy.。
repeat
repeat(次数) 把字符串重复几遍。分隔线、占位符会用到。
let g1: string = 'good';
console.log(g1.repeat(3));
打出来是 goodgoodgood。
补位
padEnd 往右边补,padStart 往左边补,补到指定长度。编号要显示成固定位数,比如 0005,用 padStart。
let a: string = 'n';
console.log(a.padEnd(9, 'b'));
console.log(a.padStart(9, 'c'));
let z1: string = '5'.padStart(4, '0');
console.log(z1);
n 右边补 b 到长度 9,是 nbbbbbbbb。左边补 c,是 ccccccccn。'5'.padStart(4, '0') 是 0005。
下一课讲数据类型转换。