Javascript 如何查看字符串中两个字符是否以特定方式分隔?

Javascript 如何查看字符串中两个字符是否以特定方式分隔?,javascript,string,charat,Javascript,String,Charat,我正在用javascript对coderbyte进行编码挑战。问题是: 使用JavaScript语言,让函数ABCheck(str)获取所传递的str参数,如果字符a和b在字符串中的任意位置被正好3个位置分隔至少一次,则返回字符串true(即“lane Borrow”将导致true,因为a和b之间正好有三个字符)。否则返回字符串false 这是我建议的答案,但不起作用。我不明白为什么。。。在很多答案中,人们都在将字符串转换为数组,但有没有一种方法可以使用.charAt()实现这一点?谢谢 功能A

我正在用javascript对coderbyte进行编码挑战。问题是: 使用JavaScript语言,让函数ABCheck(str)获取所传递的str参数,如果字符a和b在字符串中的任意位置被正好3个位置分隔至少一次,则返回字符串true(即“lane Borrow”将导致true,因为a和b之间正好有三个字符)。否则返回字符串false

这是我建议的答案,但不起作用。我不明白为什么。。。在很多答案中,人们都在将字符串转换为数组,但有没有一种方法可以使用.charAt()实现这一点?谢谢

功能ABCheck(str){
对于(变量i=0;i

我已经纠正了字符串与str的混淆以及str.length后面的“-4”。我仍然有以下案例的问题。“after it”、“aaaaddddd”和“123advb.它们都应该是假的。我该怎么做?再次感谢。

这似乎有点奏效,好吧,您只是有一个输入错误:

string.charAt(i+4)
应该是
str.charAt(i+4)


Fiddle:

是的,您也可以使用正则表达式。这是假设b总是跟在a后面

function ABCheck(str)
{
    return str.match(/a...b/g) != null;
}

str!=string
这就是问题所在。另外
i
,或者
string.charAt(i+4)
将返回一个
outofboundsexception
错误。一个问题-a和b的顺序重要吗?当我阅读问题时,“a123b”和“b123a”“应该是真的。第二个问题:为什么不使用正则表达式?老实说,正则表达式现在有点超出我的水平……在循环结束后,您需要一个
返回false
否则我不知道Javascript会返回什么,这是让JS如此有趣的一个模糊谜团。需要检查OOB异常吗?是的,同意,但最初的问题是该方法完全由于上述问题而被破坏(但仔细想想,基于一些测试,这种方法似乎不存在边界以外的问题——试试小提琴)。这可能是一个更好的解决方案,但它并没有回答OP的代码为什么不工作的问题。
/regex/.test(str)
str.match(/regex/)更好
,因为它已返回布尔值。
/g
全局匹配不是必需的,因为您不关心所有匹配,只关心是否存在任何匹配。
function ABCheck(str)
{
    return str.match(/a...b/g) != null;
}