我有这个工作函数,检查字符串是否以:
var string = "This is the text:"
function (string) {
if (string.endsWith(':')) {
// ends with :
}
if (string.endsWith(': ')) {
// ends with : and a space
}
else {
// does not end with :
}
}
我还想检查字符串是否以冒号后跟空格结尾,或者甚至是两个空格::_
或:__
(下划线表示此语法中的空格)。
关于如何使用多个if语句或定义冒号和空格的每个可能组合的任何想法?让我们假设冒号后面可以有任意数量的空格,但如果最后一个可见字符是冒号,我想在我的函数中捕获它。
答案 0 :(得分:1)
对于您的具体示例,@ Steve的答案将正常工作,因为您正在测试字符串末尾的特定条件。但是,如果要对更复杂的字符串进行测试,还可以考虑使用Regular Expressions(也称为RegEx)。 Mozilla文档提供了一个关于如何使用JavaScript正则表达式的优秀教程。
要创建正则表达式模式并使用它来测试字符串,您可以执行以下操作:
const regex = /:\s*$/;
// All three will output 'true'
console.log(regex.test('foo:'));
console.log(regex.test('foo: '));
console.log(regex.test('foo: '));
// All three will output 'false'
console.log(regex.test('foo'));
console.log(regex.test(':foo'));
console.log(regex.test(': foo'));
...正则表达式/:\s*$/
可以这样解释:
/ Start of regex pattern
: Match a literal colon (:)
\s Right afterward, match a whitespace character
* Match zero or more of the preceding characters (the space character)
$ Match at the end of the string
/ End of regex pattern
您可以使用Regexr.com对您提出的不同正则表达式模式进行实时测试,并且可以在文本框中输入示例文本以查看您的模式是否匹配。
正则表达式是一个强大的工具。在某些情况下,您希望使用它们以及其他过度杀伤的情况。对于您的特定示例,仅使用简单的.endsWith()
更简单,最可能是首选。如果你需要进行复杂的模式匹配,JavaScript函数不会削减它,那么正则表达式就可以解决问题。值得一读,以及放入工具箱的另一个好工具。
答案 1 :(得分:0)
您可以使用String.prototype.trimEnd
从末尾删除空格,然后检查:
function (string) {
if (string.endsWith(':')) {
// ends with :
}
else if (string.trimEnd().endsWith(':')) {
// ends with : and white space
}
else {
// does not end with :
}
}
答案 2 :(得分:-1)
您好,您可能想使用正则表达式/(:\ s *)/
s *将匹配0或所有空格(如果存在)