寻找字串与她的小夥伴:正规式 String Regex Replace

「学姐,这麽多的函式你都能背起来吗?」诗忆强撑着困倦的眼皮。

「如果人脑这麽厉害,就不用电脑了呢,而且Kotlin每半年会推出新的版本唷。」唯心用轻快的声线说出残酷的事实。

诗忆马上意识清醒了大半。「唔,那怎麽办呀?」

「常用的函式还是要记着,其他的,请依赖IDE。」唯心在IDE打出小点後,该类别支援的函式清单就显示了出来,随着後续打出的字越多,函式清单也逐步因筛选而缩短。「所以才说工程师英文不能太差呢,至少要能猜出需要的函式会叫什麽名字。」

图一

「也是呢,如果班代她当初就知道和加号代表的是plus函式,就可以查出数字不支援用plus连接字串。」诗忆喃喃地说。

「因为有字串可以连接数字的前例,再加上我们习惯加号在数学上的意义,所以就误以为加号万能了吧。最好还是记得用字串模板拼接变数比较好,模板里的变数用钱字号开头,大括号包住名称,程序就会自动把变数转成字串和其拼接。」

fun main() {
    var a = 1
    var b = 2
    println("${a}A${b}B")
}

「用.toString()函式转换吗?」诗忆猜测,她已经渐渐明白程序所做的事情都是有所依据的。

「对,因为字串的应用太广了,因此所有的类别都会带着这个.toString()函式,而字串类别也有许多便利的函式。」唯心突然欺身凑了过来,轻声耳语,「听过爬虫程序吧,穿梭於网路的资料大海,为主人寻找特定条件的资讯。比如说主人需要网页里的所有图片,她就将副档名是图片档名的.jpg.pngjpeg.bmp.webp等的图片连结都传回去。」唯心说着就轻笑了起来,转身回到原本的位置。「虽说从它人的网站搜集资讯不是少见的例子,但也不能让人说学校鼓励这麽做,是不是?」

诗忆偏过头揉了揉发痒的耳朵。

唯心将讲义翻到一页停下来。「像这样找寻特定词语的规则多到甚至都规划出一个领域——正规式搜寻Regular Expression,不只各家高阶程序语言都有正规式相关的函式,连Microsoft Office的Word这种文件编辑器也支援用正规式的函式搜寻。因为真的是很方便,像电话或是电子邮件信箱这样遵循规则的字串都可以利用正规式。比如说当需要将台湾市话区码的部分统一加上括号,就可以用取代功能搭配正规式。讲义只列出一部份的规则,完整的版本可以到网站去看。」

https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html

fun main() {
    //目标 (02)1234-5678
    //^0代表0开头
    //[0-9]{1,3}代表数字只能一到三个,金门马祖部分地区的区码扣掉0还有三个数字。
    //$1是符合第一个括号条件的字串。
    println("02-1234-5678".replace("(^0[0-9]{1,3})(-)".toRegex(), "($1)"))
}

诗忆看着讲义上琳琅满目的正规式规则,突然想到了一个问题。「我在IDE有看到搜寻和取代功能,函式重新命名也可以用这个功能吗?」

唯心摇摇头。「不,像是函式、类别、变数、参数等重要成员,用重新命名功能比较好,IDE还会帮助检查是否已经存在相同名字。」

图二


<<:  Day 19 | Livewire 实作 Todo List(一): 新增待办事项

>>:  Day 6 - 格式化输出、连续输入、数学函式

第一天:为什麽 CI/CD 对软件开发来说是重要的?

日渐复杂的开发流程 还记得笔者第一个接触的程序语言是 PHP,其直译的设计、简单不复杂的语法,任何人...

【Day 30】递回

最後一天,我想要用递回(Recursion)来结束我们的三十天! 递回的观念,其实就是让一个函式可以...

DAY16 - [JS] 扩充功能 - 倒数计时,暂停、开始、结束

今日文章目录 需求说明 事前准备 遇到问题 需求说明 输入时间改成分钟 增加功能:暂停、开始、结束...

Day9 职训(机器学习与资料分析工程师培训班): python、 php结合highchart

上午: Python程序设计 老师此次课程教学for回圈, List comprehension, ...

[Day-20] 呼叫自订函式(一)

今天要练习的是呼叫函式 虽然可以直接使用程序本身拥有的的函式 但那些函式都是写死的 不太能灵活运用 ...