如何使用string.endsWith判断字符串结尾并忽略空格?
嘿,这个问题很好解决!你之前用多个if枚举不同空格数量的情况确实太繁琐了,我们可以用更简洁的方式实现——要么用字符串的trimEnd()方法,要么用正则表达式,都能完美覆盖“最后可见字符是冒号”(也就是冒号后面可以跟任意数量空格)的场景。
方法一:用trimEnd()简化判断
这个方法逻辑超直观:先把字符串结尾的所有空格去掉,再检查剩下的部分是不是以冒号结尾就行。代码如下:
function endsWithColon(string) { // 先移除结尾所有空格,再判断是否以冒号结尾 return string.trimEnd().endsWith(':'); }
测试几个例子看看效果:
endsWithColon("This is the text:")→trueendsWithColon("This is the text: ")→trueendsWithColon("This is the text: ")→trueendsWithColon("This is the text")→falseendsWithColon("Hello world : ")→true(冒号前有空格也没问题,只要它是最后一个非空格字符)
方法二:用正则表达式一次性匹配
如果你更喜欢用正则,也可以直接写一个匹配规则,让它匹配“冒号 + 任意数量空格(包括0个)”结尾的字符串:
function endsWithColon(string) { // 正则说明: // : 匹配冒号 // \s* 匹配任意数量的空白字符(包括空格、制表符等,只想匹配空格可以换成[ ]*) // $ 表示字符串的结尾 return /:\s*$/.test(string); }
这个方法和上面的效果完全一致,而且不用额外处理字符串,一步到位。
两种方法都能避免写一堆if语句,选你觉得更易读的就行~
内容的提问来源于stack exchange,提问作者Filip Blaauw
相关产品推荐
相关产品推荐

