基本数据类型
字符串
字符串的标志:引号
字符串的拼接过程中:引号要配对,变量不能放在引号中
var a = "很好"; console.log("今天天气"+ a +"适合出去玩");
创建字符
- 字面量创建
- 构造函数创建
var str = ""; var str2 = new String(""); console.log(str); console.log(str2);
String.prototype方法
indexOf()
indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。
语法
stringObject.indexOf(searchvalue,fromindex)
实例
var str = "hello world"; str.indexOf("o");//4,存在即返回索引 str.indexOf("o",5);//7,从索引为5的数据开始往后找 str.indexOf("a");//-1,不存在即返回-1
charAt()
charAt() 方法可返回指定位置的字符。
请注意,JavaScript 并没有一种有别于字符串类型的字符数据类型,所以返回的字符是长度为 1 的字符串。
语法
stringObject.charAt(index)
实例
var str = "hello world"; str.charAt(2);//"l" str.charAt(-1);//""
slice()
slice() 方法可提取字符串的某个部分,并以新的字符串返回被提取的部分。
语法
stringObject.slice(start,end)
实例
var str="Hello happy world!"; document.write(str.slice(6));//"happy world!" document.write(str.slice(2,4));//"ll"
substr()
substr() 方法可在字符串中抽取从 start 下标开始的指定数目的字符。
语法
stringObject.substr(start,length)
实例
var str="Hello happy world!"; document.write(str.substr(6));//"happy world!" document.write(str.substr(2,4));//"lo h"
substring()
substring() 方法用于提取字符串中介于两个指定下标之间的字符。
语法
stringObject.substring(start,stop),取start到(stop-1)范围内的字符
实例
var str="Hello world!" document.write(str.substring(3));//"lo world!" document.write(str.substring(3,7))//"lo w"
split()
split() 方法用于把一个字符串分割成字符串数组。
语法
stringObject.split(separator,howmany)
实例
var str="How are you doing today?" console.log(str.split(" ") + "<br />")//"How,are,you,doing,today?<br />" console.log(str.split("") + "<br />")//"H,o,w, ,a,r,e, ,y,o,u, ,d,o,i,n,g, ,t,o,d,a,y,?<br />" console.log(str.split(" ",3))//(3) ["How", "are", "you"] "2:3:4:5".split(":") //将返回["2", "3", "4", "5"] "|a|b|c".split("|") //将返回["", "a", "b", "c"] "hello".split("", 3) //可返回 ["h", "e", "l"]
toLowerCase()
toLowerCase() 方法用于把字符串转换为小写。
语法
stringObject.toLowerCase()
返回值
一个新的字符串,在其中 stringObject 的所有大写字符全部被转换为了小写字符。
实例
var str="Hello World!" console.log(str.toLowerCase());//"hello world!"
toUpperCase()
toUpperCase() 方法用于把字符串转换为大写。
语法
stringObject.toUpperCase()
返回值
一个新的字符串,在其中 stringObject 的所有小写字符全部被转换为了大写字符。
实例
var str="Hello World!" console.log(str.toUpperCase());//"HELLO WORLD!"
concat()
concat() 方法用于连接两个或多个字符串。
语法
stringObject.concat(stringX,stringX,...,stringX)
实例
var str1="Hello " var str2="world!" document.write(str1.concat(str2));//"Hello world!"
includes()
includes()
方法用于判断一个字符串是否包含在另一个字符串中,根据情况返回 true 或 false。
语法
str.includes(searchString[, position])
返回值
如果当前字符串包含被搜寻的字符串,就返回 true;否则返回 false。
实例
var str = 'To be, or not to be, that is the question.'; console.log(str.includes('To be')); // true console.log(str.includes('question')); // true console.log(str.includes('not tobe')); // false console.log(str.includes('To be', 1)); // false console.log(str.includes('o be', 1)); // true console.log(str.includes('TO BE')); // false
replace()
replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
语法
stringObject.replace(regexp/substr,replacement)
返回值
一个新的字符串,是用 replacement 替换了 regexp 的第一次匹配或所有匹配之后得到的。
实例
var str="Visit Microsoft!,Microsoft" console.log(str.replace(/Microsoft/, "W3School"));//"Visit Microsoft"
字符编码的介绍和转换
ASCII
- American Standard Code for Information Interchange,美国信息交换标准代码。
Unicode
- Unicode(统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。
- Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。 Unicode目前普遍采用的是UCS-2,它用两个字节来编码一个字符。
GBK
- GBK全称《汉字内码扩展规范》(GBK即“国标”、“扩展”汉语拼音的第一个字母,英文名称:Chinese Internal Code Specification)
- GBK 向下与GB2312编码兼容,向上支持 ISO 10646.1国际标准,是前者向后者过渡过程中的一个承上启下的产物。
UTF-8
- UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,又称万国码。
- UTF-8用1到4个字节编码UNICODE字符。用在网页上可以同一页面显示中文简体繁体及其它语言(如英文,日文,韩文)
字符串常见API
myStr.charCodeAt(num)
返回指定位置的字符的Unicode(是字符编码的一种模式)编码。
var str="Hello world!"
console.log(str.charCodeAt(1));//"101"
String.fromCharCode()
String的意思就是不能用自己定义的字符串名字来调用,只能用String来定义调用。可以识别十进制和十六进制的编码,但是不识别u编码然后返回一个或多个字符串。(把unicode编码转换为字符串)。
var n = String.fromCharCode(65);//A
ES6新增
str.codePointAt()
codePointAt()
方法返回 一个 Unicode 编码点值的非负整数。
语法
str.codePointAt(pos)//支持5位unicode编码
实例
'ABC'.codePointAt(1); // 66 '\uD800\uDC00'.codePointAt(0); // 65536 'XYZ'.codePointAt(42); // undefined `𠮶`.codePointAt();//134070
String.fromCodePoint()
String.fromCodePoint()
静态方法返回使用指定的代码点序列创建的字符串。**
语法
String.fromCodePoint(num1[, ...[, numN]])
返回值
使用指定的 Unicode 编码位置创建的字符串。
实例
String.fromCodePoint(42); // "*" String.fromCodePoint(65, 90); // "AZ" String.fromCodePoint(0x404); // "\u0404" String.fromCodePoint(0x2F804); // "\uD87E\uDC04" String.fromCodePoint(194564); // "\uD87E\uDC04" String.fromCodePoint(0x1D306, 0x61, 0x1D307) // "\uD834\uDF06a\uD834\uDF07"
str.includes()
includes()
方法用于判断一个字符串是否包含在另一个字符串中,根据情况返回 true 或 false。
语法
str.includes(searchString[, position])
返回值
如果当前字符串包含被搜寻的字符串,就返回 true;否则返回 false。
实例
var str = 'To be, or not to be, that is the question.'; console.log(str.includes('To be')); // true console.log(str.includes('question')); // true console.log(str.includes('not tobe')); // false console.log(str.includes('To be', 1)); // false console.log(str.includes('o be', 1)); // true console.log(str.includes('TO BE')); // false
str.startsWith()
startsWith()
方法用来判断当前字符串是否以另外一个给定的子字符串开头,并根据判断结果返回true
或false
。
语法
str.startsWith(searchString[, position])
返回值
如果在字符串的开头找到了给定的字符则返回true;否则, 返回false.
实例
var str = "To be, or not to be, that is the question."; alert(str.startsWith("To be")); // true alert(str.startsWith("not to be")); // false alert(str.startsWith("not to be", 10)); // true
str.endsWith()
endsWith()
方法用来判断当前字符串是否是以另外一个给定的子字符串“结尾”的,根据判断结果返回true
或false
。
语法
str.endsWith(searchString[, length])
返回值
如果传入的子字符串在搜索字符串的末尾则返回true;否则将返回 false。
实例
var str = "To be, or not to be, that is the question."; alert( str.endsWith("question.") ); // true alert( str.endsWith("to be") ); // false alert( str.endsWith("to be", 19) ); // true
str.repeat()
repeat()
构造并返回一个新字符串,该字符串包含被连接在一起的指定数量的字符串的副本。
语法
/** * str: String * count: Number */ let resultString = str.repeat(count);
返回值
包含指定字符串的指定数量副本的新字符串
实例
"abc".repeat(-1) // RangeError: repeat count must be positive and less than inifinity "abc".repeat(0) // "" "abc".repeat(1) // "abc" "abc".repeat(2) // "abcabc" "abc".repeat(3.5) // "abcabcabc" 参数count将会被自动转换成整数. "abc".repeat(1/0) // RangeError: repeat count must be positive and less than inifinity
反引号语法
支持换行
var name = "root"; var str = `hello world`; console.log(str);
配合
${}
支持变量拼接var name = "root"; var str = `hello""'''""${name}" world`; console.log(str)