全部 JavaScript 数据类型都有 valueOf() 和 toString() 方法。
length
:返回字符串的长度。正则表达式
全部字符串方法都会返回新字符串。它们不会修改原始字符串。
indexof() 数组
返回字符串中指定文本首次出现的位置
lastIndexof() 函数
返回字符串中指定文本最后一次出现的位置
若是未找到文本,indexOf()
和 lastIndexOf()
均返回 -1。两种方法都接受第二个参数(非负值)做为检索的开始位置。this
search() 编码
返回字符串中指定文本首次出现的位置
search()
没法设置第二个参数做为检索的开始位置。indexof()
没法设置更强大的正则表达式。spa
提取[start,end)部分
slice(start,end)
substring(start,end)
substr(start,length)prototype
区别:substring()
没法接受负的索引。substr()
第二个参数是提取字符串的长度。code
replace()blog
默认replace() 只替换首个匹配。默认 replace() 对大小写敏感。
let str = "tom is toms"; console.log(str.replace("tom", "bob"));
toUpperCase() 把字符串转换为大写:
toLowerCase() 把字符串转换为小写:索引
链接两个或多个字符串:
let str1 = "hello"; let str2 = "world"; console.log(str1.concat(" ", str2)); //hello world
删除字符串两端的空白符。
charAt(position)
返回字符串中指定下标(位置)的字符:
charCodeAt(position)
返回字符串中指定索引的字符 unicode 编码
var str = "HELLO WORLD"; str.charAt(0); // 返回 H str.charCodeAt(0); // 返回 72
var str = "HELLO WORLD"; str[0]; // 返回 H
属性访问有问题,不推荐使用:
若是找不到字符,[ ] 返回 undefined
,而 charAt()
返回空字符串。
它是只读的。str\[0] = "A"
不会产生错误(但也不会工做!)
若是但愿按照数组的方式处理字符串,能够先把它转换为数组。
把字符串转换为数组
若是省略分隔符,被返回的数组将包含 index [0] 中的整个字符串。
若是分隔符是 "",被返回的数组将是间隔单个字符的数组:
let txt = "a,b,c,d"; console.log(txt.split(",")); //[ 'a', 'b', 'c', 'd' ] console.log(txt.split(" ")); //[ 'a,b,c,d' ] console.log(txt.split("|")); //[ 'a,b,c,d' ] console.log(txt.split("")); //['a', ',', 'b',',', 'c', ',','d']
let x = 123e5; // 12300000 let y = 123e-5; // 0.00123
Infinity
(或 -Infinity
)除以 0(零)也会生成 Infinity:
属性 | 描述 |
---|---|
MAX_VALUE | 返回 JavaScript 中可能的最大数。 |
MIN_VALUE | 返回 JavaScript 中可能的最小数。 |
NaN | 非数值 |
NEGATIVE_INFINITY | 表示负的无穷大(溢出返回)。 |
POSITIVE_INFINITY | 表示无穷大(溢出返回)。 |
toString()
以字符串返回数值。返回值类型为string
let x = 123; console.log(x.toString()); //123 console.log("123".toString()); //123 console.log((120 + 3)); //123
把数输出为十六进制、八进制或二进制。
var myNumber = 128; myNumber.toString(16); // 返回 80 myNumber.toString(8); // 返回 200 myNumber.toString(2); // 返回 10000000
toExponential()
返回字符串值,它包含已被四舍五入并使用指数计数法的数字。参数定义小数点后的字符数:
let x = 9.656; x.toExponential(2); // 返回 9.66e+0 x.toExponential(4); // 返回 9.6560e+0 x.toExponential(6); // 返回 9.656000e+0
toFixed()
返回字符串值,它包含了指定位数小数的数字。
var x = 9.656; x.toFixed(0); // 返回 10 x.toFixed(2); // 返回 9.66 x.toFixed(4); // 返回 9.6560 x.toFixed(6); // 返回 9.656000
toPrecision()
返回字符串值,它包含了指定长度的数字。四舍五入
var x = 9.656; x.toPrecision(); // 返回 9.656 x.toPrecision(2); // 返回 9.7 x.toPrecision(4); // 返回 9.656 x.toPrecision(6); // 返回 9.65600
valueOf()
以数值返回数值
var x = 123; x.valueOf(); // 从变量 x 返回 123 (123).valueOf(); // 从文本 123 返回 123 (100 + 23).valueOf(); // 从表达式 100 + 23 返回 123
这些方法并不是数字方法,而是全局 JavaScript 方法。
Number() 方法
Number() 可用于把 JavaScript 变量转换为数值,若是没法转换数字,则返回 NaN。
parseInt() 方法
解析一段字符串并返回数值。容许空格。只返回首个数字。
parseInt("10"); // 返回 10 parseInt("10.33"); // 返回 10 parseInt("10 20 30"); // 返回 10 parseInt("10 years"); // 返回 10 parseInt("years 10"); // 返回 NaN
parseFloat() 方法
解析一段字符串并返回数值。容许空格。只返回首个数字。
parseFloat("10"); // 返回 10 parseFloat("10.33"); // 返回 10.33 parseFloat("10 20 30"); // 返回 10 parseFloat("10 years"); // 返回 10 parseFloat("years 10"); // 返回 NaN
/正则表达式主体/修饰符(可选)
字符串方法
用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串,并返回子串的起始位置。
let str = "This is a code. Write By Pillar"; let n = str.search(/code/i); console.log(n);//10
用于在字符串中用一些字符替换另外一些字符,或替换一个与正则表达式匹配的子串。
let str = "This is a code. Write By Pillar"; let n = str.replace("code", "word"); console.log(n);//This is a word. Write By Pillar
RegExp 方法
用于检测一个字符串是否匹配某个模式,若是字符串中含有匹配的文本,则返回 true,不然返回 false。
let str = "This is a code. Write By Pillar"; let reg = /code/; console.log(reg.test(str));//true
该函数返回一个数组,其中存放匹配的结果。若是未找到匹配,则返回值为 null。
let str = "This is a code. Write By Pillar"; let reg = /code/; console.log(reg.exec(str)); /*[ 'code', index: 10, input: 'This is a code. Write By Pillar', groups: undefined ] */
修饰符
修饰符 | 描述 |
---|---|
i | 执行对大小写不敏感的匹配。 |
g | 执行全局匹配(查找全部匹配而非在找到第一个匹配后中止)。 |
m | 执行多行匹配。 |
模式
表达式 | 描述 |
---|---|
[abc] | 查找方括号之间的任何字符。 |
[0-9] | 查找任何从 0 至 9 的数字。 |
(x l y) | 查找任何以 l 分隔的选项。 |
元字符 | 描述 | 元字符 | 描述 |
---|---|---|---|
d | 查找数字 | D | 非数字 |
s | 查找空白字符 | S | 非空白字符 |
w | 数字字母下划线 | W | 非数字字母下划线 |
b | 匹配单词边界 | . | 任意字符 |
l | 或 | [^] | 取反 |
^ | 正则表达式开始匹配的位置 | $ | 结束的位置 |
uxxxx | 查找以十六进制数 xxxx 规定的 Unicode 字符。 |
量词 | 描述 |
---|---|
n+ | 匹配任何包含一个或多个 n 的字符串。 |
n* | 匹配任何包含零个或多个 n 的字符串。 |
n? | 匹配任何包含零个或一个 n 的字符串。 |
X{n} | 出现n次X |
X{n,} | 至少出现n次X |
X{n,m} | 至少出现n次,最多出现m次X |
邮箱的正则表达式:
^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$
手写字符串trim方法
String.prototype.trim = function (){ return this.replace(/^\s+/,'').replace(/\s+$/,'') }