我在构造接受单个字符的函数表达式时遇到困难。当字符为。 ; !该声明将为真。如果该字符不是所列的4个字符,则应返回false。
我尝试了下面列出的代码的许多不同变体。问题是,只要字符串中有任何字符组合,该函数都将返回true。例如,当我运行isPunct(“ a”)时,这些函数返回true。实际上,只有在,时,它才应返回true。 !要么 ;输入。
UserControl
我希望在以下情况下返回true: 。 , 要么 !输入 但是,我可以在字符串中输入任何内容,并且返回true。
GridCell
返回true。
此外,如果这个问题措辞不好,我只学习了3周的Java语言,对此我表示歉意。
答案 0 :(得分:1)
要构造与一组字符中的任何一个匹配的正则表达式,请使用字符集的语法,例如
[abc]
匹配a
,b
或c
。
此外,要将正则表达式与字符串匹配,请使用.test
或.match
:
const isPunct = char => /[,.!;]/.test(char);
console.log(
isPunct('.'),
isPunct('a')
);
答案 1 :(得分:1)
您需要更改if条件。使用punctList
,您尝试创建一个正则表达式。
为了使其与您的字符串匹配,您需要使用.match
或.test
。如果您的字符串与正则表达式匹配,则返回True
,否则返回False
if (ch.match(punctList))
因此该函数可以更改为以下内容,因为从技术上讲,您不需要If条件
let isPunct = function(ch) {
let punctList = /,.;!/;
return ch.match(punctList);
};
答案 2 :(得分:1)
let isPunct = function(ch) {
return "/,.;!/".indexOf(ch) > -1;
};