编写一个名为validate
的函数,它接受一个sting参数。当且仅当字符串包含至少一个点.
和正好一个@
符号时,该函数应返回true。
例如。
validate ("j.nicholson@southampton.ac.uk")===true
答案 0 :(得分:0)
如果你真的需要答案,那就是......
public static boolean create(Client player) {
Channel channel = new Channel(player);
channels.get(channel).get(player).bla();
return true;
}
答案 1 :(得分:0)
即使这是家庭作业,我也会帮助你。
有几种方法可以解决这个问题。大多数情况下,当您尝试验证某些输入时,使用Regular Expressions。但是,我还可以考虑另外两种方法:使用String's indexOf function,或手动循环组成字符串的字符数组。
让我们看一下indexOf
函数,它应该非常简单。
在Javascript中,检查字符串时没有contains
函数。这有点烦人,但您可以使用indexOf
函数创建自己的函数。
因此,从MDN,str.indexOf(searchValue[, fromIndex])
函数returns the index within the calling String object of the first occurrence of the specified value, starting the search at fromIndex. Returns -1 if the value is not found.
好的,所以如果indexOf
返回非负值,我们的字符串就会包含我们要搜索的字符串!
所以,让我们写一个包含函数。
function contains(original_string, string_to_search_for) {
// if `location_of_search_string` is 0 or greater, we have a match.
var location_of_search_string = original_string.indexOf(string_to_search_for);
if (location_of_search_string >= 0) {
return true;
} else {
return false;
}
}
到目前为止我?现在我们可以将代码清理一下,因此它不是那么多行。我们实际上可以让它成为一条线。请注意我们的if
语句是true
,我们还想返回true
?我们可以通过返回if语句求值的内容来利用这一点。我们也不需要将结果存储在变量中。
好的,现在我们有了
function contains(original_string, string_to_search_for) {
return (original_string.indexOf(string_to_search_for) >= 0);
}
好的,为了查看我们的字符串中是否有.
,我们可以运行:
var email = 'hello@example.com';
contains(email, '.'); //returns true
现在,如果我们针对&符号(@
)执行此操作,如果至少一个&符号,则返回true,但我们只想 一个。所以,我们需要另一个功能。
有几种方法可以做到这一点,但让我们坚持indexOf
。还记得我们可以传递的fromIndex
参数indexOf
吗?让我们用它。在我们第一次发现@
之后,让我们开始在该位置之后寻找另一个&符号&em>。如果我们找不到,那么我们只有一个@
。
function containsJustOne(original_string, string_to_search_for) {
var first_location = original_string.indexOf(string_to_search_for);
if (first_location >= 0) {
// move 1 spot after our first found index
var second_location = original_string.indexOf(string_to_search_for, first_location + 1);
// We want to return true if we DIDN'T find a second location,
// aka, if it is equal to -1.
return (second_location === -1);
} else {
// We didn't find any, return false right away.
return false;
}
}
OK!所以,我们可以使函数号为validateEmail(email)
,如下所示:
function validateEmail(email) {
return (containsJustOne('@') && contains('.'));
}
只是为了好玩,如果你想用正则表达式解决这个问题,我可能会这样做:
function validateEmailWithRegExp(email) {
return /^[^@]*@[^@]*$/.test(email) && /^(?:.*\.)+.*$/.test(email);
}
单行很有趣!这几乎不是您可以使用的最优化的reg exp,但它可以根据您的帖子完成工作。