文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

从编辑器视角审视String的4类26种方法

2024-12-03 08:51

关注

为什么string 字符串在各种语言中会有如此之多的 methods 呢?只须简单想一下,我们日用的编辑的全部功能其实只不过就是在处理和操作字符串。

一、编辑器文本操作

开始盘点 string 的所有 methods 之前,我们首先梳理在编辑器中,处理文本文字,都有哪些操作。

第一类,选择复制与黏贴;

第二类,具体的编辑操作,写入文本,查询修改,以及删除;

第三类,撤销与重复操作;

第四类,补全操作,语法检查以及断行等。

下面,我们将按照以上编辑器文本处理的类型,对所有string的方法作分类。

二、String 字符串操作的分类

事实上,我们每日所处理的文本内容,文件的内容就是 string。

第一类、选择与复制(2种方法)

首先编辑器处理文本内容的第一类,黏贴与复制,就是光标选中文本的特定区域,执行复制与黏贴操作。对应到 string 操作中,就是 substring, slice.

  1. > let s = "string categories" 
  2. > s.substring(7, 16) 
  3. 'categorie' 
  4. > s.substring(16, 7) 
  5. 'categorie' 
  6. // slice 与 substring 的区别只在于,substring 会自动调整大小数的顺序 
  7. > s.slice(7, 16) 
  8. 'categorie' 
  9. > s.slice(16, 7) 
  10. '' 
  11. // 特殊的 split 方法 
  12. > s.split(" "
  13. 'string''categories' ] 

 第二类,具体的编辑操作

在数据库操作中,我们往往喜欢说“增删改查“这样的四种操作和操作顺序。乍一读似乎朗朗上口,然而细品起来,"增删改查"的顺序比较荒谬。怎么刚刚“增”了就马上又要“删”呢?删除的依据是什么?不要首先查询吗?查询后不要尝试修改吗?直至修改不好,最后一步才是“删除”。

因此,将“增删改查”的顺序,变更为“增查改删”。

所谓的“增“就是”字符串“的创建,有三种方式:

  1. s = 'string categories' // single quote 
  2. s = "string categories" // double quote  
  3. s = `string categories` // caret ` 

 其次是"查", 无论在编辑器中,还是字符串的处理过程中,查询都是关键的部分。编辑器查询往往多为regex的应用,这对于 string 操作而言过于重型,常用的多为逻辑查询5种。

  1. > s.charAt(0) 
  2. 's' 
  3. > s.charAt(s.length-1) 
  4. 's' 
  5. > s.startsWith('str'
  6. true 
  7. > s.endsWith('es'
  8. true 
  9. > s.includes('c'
  10. true 
  11. > s.indexOf('c'
  12. > s.lastIndexOf('c'
  13. 7s 

 高阶的regex正则查询:

  1. > s.search(/[\s]/g); 
  2. > s.search(/[\w]/g); 
  3. > s.match(/[\s]/i) 
  4. ' 'index: 6, input: 'string categories', groups: undefined ] 
  5. > s.match(/[\w]/i) 
  6. 's'index: 0, input: 'string categories', groups: undefined ] 
  7. > s.match(/[\w]/g) 
  8.   's''t''r''i'
  9.   'n''g''c''a'
  10.   't''e''g''o'
  11.   'r''i''e''s' 
  12. > arr = [...s.matchAll(/[\w]/g)] 
  13.   [ 's'index: 0, input: 'string categories', groups: undefined ], 
  14.   ... 
  15.   [ 'i'index: 14, input: 'string categories', groups: undefined ], 
  16.   [ 'e'index: 15, input: 'string categories', groups: undefined ], 
  17.   [ 's'index: 16, input: 'string categories', groups: undefined ] 

 紧随“查询”的是“变更”与“修改”, 继续regex的逻辑,我们查看 replace.

  1. > s.replace('string''arry'
  2. 'arry categories' 
  3. > s.replace(/[a-z]+/, "array"
  4. 'array categories' 
  5. > s.replaceAll() 

 其他常用的 case, transpose, join, 以及 whitespace 的操作:

  1. // CaseManipulation 
  2. > s.toLowerCase() 
  3. 'string categories' 
  4. > s.toUpperCase() 
  5. 'STRING CATEGORIES' 
  6. s.toLocaleLowerCase 
  7. s.toLocaleUpperCase 
  8.  
  9. // 对 whitespace 的处理 
  10. s.trim 
  11. s.trimStart 
  12. s.trimEnd 
  13.  
  14. // 增加空格等 
  15. s.padStart 
  16. s.padEnd 
  17.  
  18. //以及多行的合并 
  19. > s.concat(' new'
  20. 'string categories new' 

 第三类 撤销与重复操作:

没有撤销操作而只有重复.

  1. > s.repeat(3) 
  2. 'string categoriesstring categoriesstring categories' 

第四类 补全,语法检查和断行

此处我们姑且将 pad 作为补全, 而将 split 想象为断行.

三 对底层编码的处理

String 字符串就是文字与编码, 因此最底层的对应编码的操作也归类此处处理.

  1. > s.charCodeAt(0) 
  2. 115 
  3. > s.codePointAt(0) 
  4. 115 
  5. > s.normalize() 
  6. 'string categories' 

 四 总结

诸上为从编辑器的惯常操作,而对string所有的methods作归类的盘点。

  1. // 1.选择与复制 3 
  2. substring, slice, split 
  3.  
  4. // 2.具体的编辑操作, 按照“增查改删”的原则 
  5. // 2.1 增加 1 
  6. constructor 
  7. // 2.2 查询 8 
  8. charAt,  
  9. startsWith, endsWith,  
  10. includes, indexof, lastIndexOf, 
  11. search, searchAll 
  12. // 2.3 改 10 
  13. replace, replaceAll,  
  14. toLowerCase, toUpperCase, //Case 
  15. trim, trimStart, trimEnd, // whitespae 
  16. padStart, padEnd // completion 
  17. concat //合并 join 
  18.  
  19. // 3. 重复与撤销等 1 
  20. repeat 
  21.  
  22. // 4.处理底层编码 3 
  23. charCodeAt,codePointAt,normalize 

 

 

来源:今日头条内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯