<JS>学习笔记(String)

新人学习JS的日记。

欢迎各位朋友纠错!

以下内容都在谷歌浏览器进行测试可用

>>语法
//基本字符串
let str = 'string';             // string
str = "string";                 // string
//字符串对象     不建议主动使用
let objStr = new String('string'); // String {0: "s", 1: "t", 2: "r", 3: "i", 4: "n", 5: "g", length: 6, [[PrimitiveValue]]: "string"}
objStr = Object('string'); // String {0: "s", 1: "t", 2: "r", 3: "i", 4: "n", 5: "g", length: 6, [[PrimitiveValue]]: "string"}
>>属性
str.length // 返回字符串的长度 6
str.__proto__ // 字符串的原型对象
String.prototype
1: 原型是一个 ""空字符串 的封装对象
   测试: Object.prototype.toString.call(String.prototype) // "[object String]"
2: ES5规定该值不可变. 严格模式下会报错.
>>方法
(1) 获取指定字符串
(字符串的下标,和数组一样,从0开始)
>> str.charAt( index )  //返回指定位置的字符
1: 返回字符串index索引位置的字符,默认index为0。若index不在正常范围,则返回""空字符串。

>> str[index]  //返回指定位置的字符
1: 返回字符串index索引位置的字符。若index不在正常范围,则返回undefined。

>> str.substr( start [, length] ) //返回截取后的字符串
1: start:从此索引位置开始获取字符串。 length:要获取的长度(个数)。
2: 若不写length参数,则从start开始获取字符串到str末尾。
3: 若start为<正数>,且大于str.length,返回""空字符串。
4: 若start为<负数>,则按照 str.length + start 的位置开始。若 Math.abs(start) > str.length 则使用 0 开始获取。
5: 若length为<0,负数>。返回一个""空字符串。大于str.length,则从start开始获取到str末尾。
6: 若start为NaN,则返回整个字符串,若length为NaN,则返回""空字符串。

>> str.substring(start[, end])  //返回截取后的字符串
1: start:从此索引位置开始获取字符串。 end:到此索引位置结束获取(此位置的字符不会获取到)。
2: 若不写end,则从start开获取字符串到str末尾。
3: 若start == end 则返回""空字符串
4: 两个参数中,传入<负数>和NaN都被当做0处理。 值大于str.length都当做length的大小处理
5: 若start大于length, 则相当于将两个参数互换例如: str.substring(1, 0) == str.substring(0, 1)。

>> str.slice(start [, end] )  //返回截取后的字符串
1: start:从此索引位置开始获取字符串。 end:到此索引位置结束获取(此位置的字符不会获取到)。
2: 若不写end,则从start开获取字符串到str末尾。
3: 若start == end 则返回""空字符串
4: 两个参数中,传入NaN都被当做0处理。 值大于str.length都当做length的大小处理
5: 两个参数中,传入<负数>都会变为 str.length+参数 后的结果。

>> str.repeat(count)  //返回重复次数后的字符串
1: count表示要重复多少次
2: count若为:Infinity,负数 则报错

>> str.toUpperCase()  //返回大写后的字符串
1: 对中文没效果

>> str.toLowerCase()  //返回小写后的字符串
1: 对中文没效果

>> str.trim()  //返回去掉两端空白字符的字符串
1:在这个上下文中的空白字符是所有的空白字符 (space, tab, no-break space 等) 以及所有行终止符字符(如 LF,CR)。

>> str.concat(string2, string3[, ..., stringN]) //连接两个字符串文本,并返回一个新的字符串。
1: string参数和原字符串连接的多个字符串
2: 强烈建议使用(+, +=)代替 concat方法,性能不如+ ,+=好
(2) 查找字符
>> str.indexOf(val[ ,start ])  //返回指定字符串在str第一次查找到的索引
1: val:要被查找的字符串。 start:开始查找的位置,默认为0。
2: <查找规则> : 从start开始 以 <从左往右 → >的方式查找。
3: val若是""空字符串,如果start < str.length 返回 start. 如果 start >= str.length 返回str.length
4: start若是负数,如同传入了0。
5: 返回指定值的第一次出现的索引; 如果没有找到 -1。

>> str.lastIndexOf(val[, start])  //返回指定字符串在str第一次查找到的索引
1: 规则基本同indexOf,区别如下。
2: <查找规则> : 从start开始 以 <从右往左 ← >的方式查找。

>> str.includes( val[, start] )  //判断一个字符串(val)是否包含在另一个字符串(str)中
1: val:要被查找的字符串。 start:开始查找的位置,默认为0。
2: start若是负数,如同传入了0。
3: val若是""空字符串,永远返回true。
4: 包含返回true,不包含返回false。

>> str.startsWith(val [, start]);  //判断字符串是否以子字符串(val)开头的
1: val:要被查找的字符串。 start:开始查找的位置,默认为0。
2: var为""空字符串,永远返回true。
3: 若val在str中的索引值 === start 则返回true。否则返回false。
4: start默认的情况,就是在查找<开头>是不是val。

>> str.endsWith(val[, start])  //判断字符串是否以子字符串(val)结尾的
1: val:要被查找的字符串。 start:开始查找的位置,默认为str.length。
2: var为""空字符串,永远返回true。
3: 若val在str中的索引值+val.length === start 则返回true。否则返回false。
4: start默认的情况,就是在查找<末尾>是不是val。

(3) RegExp有关(分割,替换,查找)
>> str.split([val[, num]]) //分割一个字符串,返回数组
1: val:指定用来分割字符串的字符(串).可以是<字符串>或<正则对象> 
2: val 为 ""空字符串,返回每个字符单独一项的数组.
3: num:返回 分割数组的 前num项. 默认返回整个数组.
4: 不写参数,返回 [str]。相当于将str push到空数组

>> str.replace( val, newStr|function )  //替换指定字符串
1: val:一个<正则对象>或者<其字面量>。该正则所匹配的内容会被第二个参数的返回值替换掉.
2: newStr 用于替换的字符串(可以插入特殊的变量名,参考3)。
3: $$ 插入一个 "$"。
   $& 插入匹配的子串。
   $` 插入当前匹配的子串左边的内容。
   $' 插入当前匹配的子串右边的内容。
   $n 假如第一个参数是正则对象,并且 n 是个小于100的非负整数,那么插入第 n 个括号匹配的字符串.
4: function用该函数的返回值替换第一个参数匹配到的结果。
   函数的自动传入的参数 (匹配到的子字符串 [,p1 ,p2], 子字符串索引值, 原字符串);  
   [p1,p2] 是假如replace()方法的第一个参数是一个正则对象,则代表第n个括号匹配的字符串。(对应于上述的$1,$2等。)

>> str.search(regexp) //返回正则首次匹配到的索引
1: regexp:正则对象. 若传入非正则,会隐式new RegExp(regexp) 转换为正则对象。
2: 返回首次匹配的索引,匹配失败,返回-1。

>> str.match(regexp)  //用正则去匹配字符串.
1: regexp:正则对象. 若传入非正则,会隐式new RegExp(regexp) 转换为正则对象。
2: 匹配成功返回一个数组.
3: 数组第一项是匹配的结果,其余项是分组捕获项.  未提供参数返回[""]
4: 数组两个属性: index:第一次匹配的索引, input:原本字符串
5: 没有匹配到返回null




(4) Unicode相关
>> str.charCodeAt(index)  //返回索引位置的Unicode 编码
1: index参数传入一个大于等于 0,小于字符串长度的整数。如果不是一个数值,则默认为 0。
2: index索引超出范围,则返回 NaN
3: 4字节字符无法正常处理 例如 :0x20BB7 "𠮷"字

>> str.charCodeAt(index) //返回索引位置的Unicode 编码
1: index参数传入一个大于等于 0,小于字符串长度的整数。如果不是一个数值,则默认为 0。
2: index索引超出范围,则返回 Undefined
3: 正常处理4字节字符

>> String.fromCharCode(num1, ..., numN) //返回Unicode对应的字符组成的字符串
1: num写Unicode 编码
2: 无法对4字节的字符使用例如 :0x20BB7 "𠮷"字
3: 如果传入无效的 Unicode 编码则报错

>> String.fromCodePoint(num1[, ...[, numN]]) //返回Unicode对应的字符组成的字符串
1: num写Unicode 编码
2: 正常处理4字节字符例如 :0x20BB7 "𠮷"字
3: 如果传入无效的 Unicode 编码则报错
(5) 模板字符串
>>语法
`dsa${代码块}` (反引号,在esc下面);
在``写的会直接转换为字符串, ${}里面可以写代码会被JS正常解析,并且将结果值执行String(值)
`string${2*6}` // "string12"

>> 带标签的模板字符串(调用函数)  例如:
function test(strArr, ...valArr){
    console.log(strArr) // ["a", "b", "c", "d", raw: Array(4)]
    console.log(valArr) //[1, 2, Array(2)]
    return 'test'
}
var s = test`a${1}b${2}c${[1,2]}d` //不能写括号
console.log(s)  // "test"
函数的第一个参数: 相当于将原本模板字符串以${}分割,将分割后的项 放入数组,在传入函数
函数的第二个参数: 模板字符串的代码块的值挨个传入函数,这里用ES6 ...(解构赋值)将值收集到数组中.
函数返回什么都可以.(当做正常函数对待就好了). 只不过是<模板字符串>调用的时候 不要加括号就行

以上是我所知的的东西,有任何错误,请在评论指出!
O(∩_∩)O谢谢你的观看~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,417评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,921评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,850评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,945评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,069评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,188评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,239评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,994评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,409评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,735评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,898评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,578评论 4 336
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,205评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,916评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,156评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,722评论 2 363
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,781评论 2 351

推荐阅读更多精彩内容