对js中的String类型的补充

在js中,字符串是用单引号或者是双引号引入的一串字符集,当然,在使用单引号还是双引号这是没有什么本质区别的,但是不能交叉使用,只能成对使用,eg:'hello',"hello","'hello'",'"hello"',这都是可以的,但是'"hello'"或是"'hello"'这种交叉使用是不允许的,在js中运行时都会将单引号转化为双引号,当双引号嵌套单引号,单引号不会转成双引号,eg:"hello 'world'" // "hello 'world'",通过转义字符'\'也是不可以转成双引号的,"hello \"world\"" // "hello "world""要想得到想要的双引号,则需要对内部双引号进行转义,长字符串可以使用``包含起来
使用chatAt通过下标来获取字符串的某个字符,实际上与字符串就是一个类数组,当然同样可以使用''[0]的方式来获取当前下标的字符啦 eg: 'hello'.charAt(0) === 'hello'[0] // true
字符串比较,通常使用比较运算符 eg: 'a' < 'b'
基本字符串与对象字符串 eg:
typeof 'a' // string
typeof new String('a') // object

在使用eval时 eg:
s1 = '2 + 2';
s2 = new String('2 + 2');
eval(s1) // 4
eval(s2) // "2 + 2" // eval执行语句需要的是基本字符串,而不是字符串对象
eval(s2.valueOf()) // 4 通过调用valueOf或是toString方法转为基本字符串加以调用

fromCharCode:String中的静态方法,返回字符串,表示Unicode的值,参数是一组序列数字eg:
String.fromCharCode(65,66,67) // "ABC"
fromCodePoint:String静态方法,返回使用Unicode编码创建的字符串 若参数是无效的Unicode编码则抛出异常eg:
String.fromCodePoint('64') // "@"
String.fromCodePoint(Infinity) // RangeError: Invalid code point Infinity

concat:方法将一个或多个字符串与原字符串连接合并,形成一个新的字符串并返回。 concat 方法并不影响原字符串 eg:'a'.concat('b','c') // "abc"与连接符“+,+=”作用一致,建议使用连接符
match:如果正则表达式不包含 g 标志,则 str.match() 会返回和 RegExp.exec() 相同的结果。而且返回的 Array 拥有一个额外的 input 属性,该属性包含被解析的原始字符串。另外,还拥有一个 index 属性,该属性表示匹配结果在原字符串中的索引(以0开始)。

如果正则表达式包含 g 标志,则该方法返回一个 Array ,它包含所有匹配的子字符串而不是匹配对象。捕获组不会被返回(即不返回index属性和input属性)。如果没有匹配到,则返回 null eg:


var str = 'For more information, see Chapter 3.4.5.1';
var re = /see (chapter \d+(\.\d)*)/i;
var found = str.match(re);

console.log(found);

// logs [ 'see Chapter 3.4.5.1',
//        'Chapter 3.4.5.1',
//        '.1',
//        index: 22,
//        input: 'For more information, see Chapter 3.4.5.1' ]

// 'see Chapter 3.4.5.1' 是整个匹配。
// 'Chapter 3.4.5.1' 被'(chapter \d+(\.\d)*)'捕获。
// '.1' 是被'(\.\d)'捕获的最后一个值。
// 'index' 属性(22) 是整个匹配从零开始的索引。
// 'input' 属性是被解析的原始字符串。
 不传参数将返回空数组,参数若是非正则表达式,将会通过RegExp隐式转化为RegExp对象

repeat:构造并返回一个新字符串,该字符串包含被连接在一起的指定数量的字符串的副本,参数介于0和正无穷大之间的整数 : [0, +∞) 。表示在新构造的字符串中重复了多少遍原字符串eg:
"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

({toString : () => "abc", repeat : String.prototype.repeat}).repeat(2)
//"abcabc",repeat是一个通用方法,也就是它的调用者可以不是一个字符串对象
search() 方法执行正则表达式和 String对象之间的一个搜索匹配。参数一个正则表达式(regular expression)对象。如果传入一个非正则表达式对象,则会使用 new RegExp(obj) 隐式地将其转换为正则表达式对象。如果匹配成功,则 search() 返回正则表达式在字符串中首次匹配项的索引。否则,返回 -1 eg:

function testinput(re, str){
  var midstring;
  if (str.search(re) != -1){
    midstring = " contains ";
  } else {
    midstring = " does not contain ";
  }
  console.log (str + midstring + re);
}
testinput('h','hello') // hello contains h

slice() 方法提取一个字符串的一部分,并返回一新的字符串
str.slice(beginSlice,endSlice)参数
beginSlice
从该索引(以 0 为基数)处开始提取原字符串中的字符。如果值为负数,会被当做 sourceLength + beginSlice 看待,这里的sourceLength 是字符串的长度 (例如, 如果beginSlice 是 -3 则看作是: sourceLength - 3)
endSlice
可选。在该索引(以 0 为基数)处结束提取字符串。如果省略该参数,slice会一直提取到字符串末尾。如果该参数为负数,则被看作是 sourceLength + endSlice,这里的 sourceLength 就是字符串的长度(例如,如果 endSlice 是 -3,则是, sourceLength - 3)。返回一个从原字符串中提取出来的新字符串
slice() 从一个字符串中提取字符串并返回新字符串。在一个字符串中的改变不会影响另一个字符串。也就是说,slice 不修改原字符串,只会返回一个包含了原字符串中部分字符的新字符串。
注意:slice() 提取的新字符串包括beginSlice但不包括 endSlice。
例1:str.slice(1, 4) 提取新字符串从第二个字符到第四个 (字符索引值为 1, 2, 和 3)。
例2:str.slice(2, -1) 提取第三个字符到倒数第二个字符。eg:
var str1 = 'The morning is upon us.';
var str2 = str1.slice(4, -2);

console.log(str2); // OUTPUT: morning is upon u

split() 方法使用指定的分隔符字符串将一个String对象分割成字符串数组,以将字符串分隔为子字符串,以确定每个拆分的位置。
str.split([separator[, limit]])参数
separator
指定表示每个拆分应发生的点的字符串。separator 可以是一个字符串或正则表达式。 如果纯文本分隔符包含多个字符,则必须找到整个字符串来表示分割点。如果在str中省略或不出现分隔符,则返回的数组包含一个由整个字符串组成的元素。如果分隔符为空字符串,则将str原字符串中每个字符的数组形式返回。
limit
一个整数,限定返回的分割片段数量。当提供此参数时,split 方法会在指定分隔符的每次出现时分割该字符串,但在限制条目已放入数组时停止。如果在达到指定限制之前达到字符串的末尾,它可能仍然包含少于限制的条目。新数组中不返回剩下的文本。返回源字符串以分隔符出现位置分隔而成的一个 Array

说明:找到分隔符后,将其从字符串中删除,并将子字符串的数组返回。如果没有找到或者省略了分隔符,则该数组包含一个由整个字符串组成的元素。如果分隔符为空字符串,则将str转换为字符数组。如果分隔符出现在字符串的开始或结尾,或两者都分开,分别以空字符串开头,结尾或两者开始和结束。因此,如果字符串仅由一个分隔符实例组成,则该数组由两个空字符串组成。

如果分隔符是包含捕获括号的正则表达式,则每次分隔符匹配时,捕获括号的结果(包括任何未定义的结果)将被拼接到输出数组中。但是,并不是所有浏览器都支持此功能。eg:

var myString = "Hello 1 word. Sentence number 2.";
myString.split(/(\d)/); // [ "Hello ", "1", " word. Sentence number ", "2", "." ]
PHP Warning: curl_exec() has been disabled for security reasons in /home/ftp/f/free49568/wwwroot/wp-content/themes/Variant/functions.php on line 490 百度已收录
分享