我使用下面的代码作为coderbyte:
function VowelCount(str) {
// code goes here
return str.match(/[aeiou]/gi).length;
}
// keep this function call here
// to see how to enter arguments in JavaScript scroll down
print(VowelCount(readline()));
我理解大部分代码,但以下部分除外:
1.正斜杠和方括号有什么作用?
gi
是做什么的?search()
和match()
之间有什么区别?我应该在什么条件下使用什么?
4条答案
按热度按时间9udxz4iz1#
有几个函数可以在一个字符串中搜索另一个字符串,最著名的可能是
.indexOf()
,.search()
,.match()
。返回stringstr中第一个匹配Strings的索引(位置)。
做 * indexOf()做的 * 但是允许s不仅仅是一个字符串,而且是一个正则表达式。(实际上,它甚至认为一个“正常”字符串是这样的)。
类似于 *search(),但 * 不是返回第一个示例的索引,而是**以数组的形式返回 * 所有 * 示例。
现在,关于
/[]/
和类似的,这是(一个例子)前面提到的正则表达式。更多关于什么做什么可以找到here的信息。简而言之,它定义了一个字符串模式来搜索以及如何搜索它。
a0zr77ik2#
引用the doc:
当您想知道是否在字符串中找到了模式时,使用
search
(类似于正则表达式test
方法);要获得更多信息(但执行速度较慢),请使用match
(类似于正则表达式exec
方法)。在这种情况下,仅仅知道字符串中有一个元音('a'、'e'、'i'、'o'或'u'--这就是所谓的字符类表达式
[aeiou]
所表示的)是不够的,因为函数的目的是 * count * 个元音。因此,它扫描字符串,将 * all *(这就是
/g
修饰符的作用)匹配项收集到一个数组中,而不考虑字符大小写(/i
),然后返回该数组的长度。但是这个函数有一个bug,因为String.match返回
null
,如果param string没有元音,这个函数就会抛出一个错误:必须通过对匹配结果进行额外检查来修复。
ubbxdtey3#
斜线分隔正则表达式(
RegExp()
)文本(与使用new RegExp()
表示法相反),方括号是正则表达式要匹配的一系列字符。参考文献:
RegExp()
.bxjv4tth4#
正斜杠用于 Package 正则表达式语句。
gi表示搜索将是全局的(所有匹配项)并且不区分大小写。