TypeScript 编程实践
一、简介
概念:零个或多个字符的有限序列javascript的字符匹配,由单冒号 ('') 或双冒号 ("") 定义。
let str1: string = '' // 空串
let str2: string = ' ' // 空格串
let str3: string = 'Hello, world.' // 字符串
定义:
string // 基本类型
String // 字符串类
let text1: string = 'This is a String.' // 由单引号('')或双引号("")直接定义
let text2: String = new String('This is a String.') // 由构造函数String()来间接定义
2. 实例属性
构造函数 对构造函数的引用
let s1 = new String('This is a String')
console.log(s1.constructor) // [Function: String]
length 字符串的宽度
let s2 = new String('Hello, world.')
console.log(s2.length) // 13 空格也算
原型 对构造函数原型的引用
let s3 = new String('I am a student.')
console.log(s3.prototype) // undefined
3. 示例方法
charAt() // 返回指定位置的字符
charCodeAt() // 返回指定位置字符的 ASCII 码
indexOf() // 返回字符串中特定字符串第一次出现的位置
lastIndexOf() // 返回字符串中特定字符串的最后一次出现
toLocaleLowerCase() // 根据语言环境将字符串转换为大写
toLocaleUpperCase() // 根据语言环境将字符串转换为小写
toLowerCase() // 将字符串转换为大写
toUpperCase() // 将字符串转换为小写
substr(m, n) // 截取从m到m+n的字符串,m+n不取
substring(m, n) // 截取m到n的字符串javascript的字符匹配,n不取
toString() // 返回字符串
valueOf() // 返回一个字符串
split(c) // 根据字符c将字符串分割成字符串字段
slice(m, n) // 对字符串进行切片并返回切片后的字符串
search(RegExp) // 按正则表达式搜索,返回下标或-1
match(RegExp) // 通过正则表达式匹配,返回链表或者为null
Replace(RegExp, new) // 将正则表达式匹配的字符串替换为新字符串
concat() // 连接两个或多个字符串并返回一个新字符串
let str = 'I am Chinese.'
console.log(str.charAt(2)) // 'a' 下标2的字符,从0开始计数
console.log(str.charCodeAt(2)) // 97 字符'a'的ASCII码
console.log(str.indexOf('am')) // 2 子串'am'首次出现的下标
console.log(str.lastIndexOf('e')) // 11 子串'e'最后出现的下标
console.log(str.toUpperCase()) // 'I AM CHINESE'
console.log(str.toLowerCase()) // 'i am chinese'
console.log(str.toLocaleUpperCase()) // 'I AM CHINESE'
console.log(str.toLocaleLowerCase()) // 'i am chinese'
console.log(str.substr(2, 6)) // 'am Chi' [2, 2+6) 2+6不取
console.log(str.substring(2, 6)) // 'am C' C [2, 6) 6不取
console.log(str.valueOf()) // 'I am Chinese'
console.log(str.toString()) // 'I am Chinese'
console.log(str.split(' ')) //['I', 'am', 'Chinese'] 以空格分割串
console.log(str.slice(0, 6)) // 'I am C' [0, 6) 6不取
console.log(str.search(/ese/gi)) // 9 正则搜索,搜索到返回下标,搜索不到返回-1
console.log(str.match(/hi/gi)) // ['hi'] 正则匹配,以数组形式返回所有匹配正则表达式的串,无匹配返回null
console.log(str.replace('I am', 'You are')) // 'You are Chinese.'
let str1 = 'Good'
let str2 = 'Girl'
let str3 = str1.concat(str2)
console.log(str3) // 'Good Girl'
4. 字符串连接
// 使用连接运算符 +
let s1 = 'abc'
let s2 = '123'
let n1 = 1
let n2 = 9
let flag = true
console.log(s1 + s2) // 'abc123'
console.log(s1 + n1 + n2) // 'abc19'
console.log(n1 + n2 + s1) // '10abc'
console.log(s1 + flag) // 'abctrue'
// 使用模板字符串 `${}`
console.log(`${n1}${n2}${s1}`) // '19abc'
console.log(`${s1}${flag}`) // 'abctrue'
// concat()方法,JavaScript不限制参数类型,TypeScript仅字符串类型
console.log(s1.concat(flag)) // 'abctrue'
console.log(s1.concat(n1)) // 'abc1'
五、字符串转换
基本类型转字符串
// toString()
let n1: number = 100
let f1: boolean = true
let s1: symbol = Symbol()
console.log(n1.toString()) // '100'
console.log(f1.toString()) // 'true'
console.log(s1.toString()) // 'Symbol()'
// 连接符 '' +
console.log('' + n1) // '100'
// 模板字符串 `${}`
console.log(`${f1}`) // 'true'
字符串到原始类型
// 包装函数Number() Boolean() Symbol()
let str: string
str = '123'
console.log(Number(str)) // 123
str = 'true'
console.log(Boolean(str)) // true
str = 'symbol'
console.log(Symbol(str)) // Symbol(symbol)
// parseInt() parseFloat()
console.log(parseInt('123456')) // 123456
console.log(parseFloat('123.456')) // 123.456
罗马帝国崩溃的一个主要原因是,没有0,他们没有有效的方法来指示他们的C程序成功终止。 ——罗伯特·费斯