(转)对string.map 这几个函数功能的学习了下整理
By
笑口常
at 2020-11-02 • 0人收藏 • 945人看过
感谢: 圣地 提供源码
import console; //1、只有@1时,既省略@2、@3会设为"[-\d]+",同时省略@3会设为tonumber函数,将匹配结果传给tonumber处理后push到一数组中最后返回这个数组 console.log('\n1、只有@1时,既省略@2、@3会设为"[-\d]+",同时省略@3会设为tonumber函数,将匹配结果传给tonumber处理后push到一数组中最后返回这个数组') var arr = string.map("123 456 789") console.log("结果为:") console.dump(arr); //2、@2可以是一个字符串类型的模式串,用来在@1中查找,匹配到的所有结果会被push到一个数组中最后返回这个数组 console.log('\n2、@2可以是一个字符串类型的模式串,用来在@1中查找,匹配到的所有结果会被push到一个数组中最后返回这个数组') var arr = string.map("123 456 789","\d+") console.dump("结果:",arr); //3、@2可以是包含模式串数组,数组中的前面模式串匹配结果会做为后面模式串的查询字符串逐步缩减,返回值为最后模式串匹配结果数组 // 其内部为string.search实现 console.log('\n3、@2可以是包含模式串数组,数组中的前面模式串匹配结果会做为后面模式串的查询字符串逐步缩减,返回值为最后模式串匹配结果数组') var arr = string.map("123 456 789",{"\d+\s";"\d\s"}) //先找形如 "123 " 再找形如 "3 " console.dump("结果:",arr); //4、@2可以是包含模式串的表,键名可为任意名称,键值为模式串,返回相同结构的表,每个键对应的值会更新为表中模式串的匹配结果 console.log('\n4、@2可以是包含模式串的表,键名可为任意名称,键值为模式串,返回相同结构的表,每个键对应的值会更新为表中模式串的匹配结果') var arr = string.map("123 456 489",{a="4\d+";b="\d\s"}) //表的模式串间不存在关系,各自用模式串在@1中去匹配 console.dump("结果:",arr); //5、@2模式串中可以用括号指定匹配分组,这将直接返回分组匹配到的字符串并将其push到返回的结果数组中 console.log('\n5、@2模式串中可以用括号指定匹配分组,这将直接返回分组匹配到的字符串并将其push到返回的结果数组中') var arr = string.map("123 a456b c789d","a(\d+)b") console.dump("结果:",arr); //6、@2模式串中的匹配分组还可以设为多个,这将会同时将多个匹配结果做为数组push到结果数组中最终形成一个二维数组结果 console.log('\n6、@2模式串中的匹配分组还可以设为多个,这将会同时将多个匹配结果做为数组push到结果数组中最终形成一个二维数组结果') var arr = string.map("123 a456b c789d","a(\d+)b\sc(\d+)d") console.dump("结果:",arr); //7、可以自定义@3映射函数,这会将@2模式串匹配到的结果做为参数传到@3映射函数,@3的返回值将push到返回数组中 console.log('\n7、可以自定义@3映射函数,这会将@2模式串匹配到的结果做为参数传到@3映射函数,@3的返回值将push到返回数组中') var func = function(...){ console.log("匹配结果传过来了:",...) return ...+"我是映射函数返回的"; } var arr = string.map("123 456 789","\d+",func) console.dump("结果:",arr); //8、单独省略@3映射函数时,内部会设置一个函数代替@3其作用为直接返回匹配结果。最后匹配结果会 push 数组中最后返回这个数组 console.log('\n8、单独省略@3映射函数时,内部会设置一个函数代替@3其作用为直接返回匹配结果。最后匹配结果会 push 数组中最后返回这个数组') var arr = string.map("123 456 789","\d+") console.dump("结果:",arr); console.pause(true);
登录后方可回帖