js-基本数据类型

基本数据类型

字符串

字符串的标志:引号

  • 字符串的拼接过程中:引号要配对,变量不能放在引号中

    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() 方法用来判断当前字符串是否以另外一个给定的子字符串开头,并根据判断结果返回 truefalse

  • 语法

    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()方法用来判断当前字符串是否是以另外一个给定的子字符串“结尾”的,根据判断结果返回 truefalse

  • 语法

    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)