Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 字符串比较“=&!=&引用+&引用,错误结果_Javascript_String - Fatal编程技术网

Javascript 字符串比较“=&!=&引用+&引用,错误结果

Javascript 字符串比较“=&!=&引用+&引用,错误结果,javascript,string,Javascript,String,任务是检查以下给定条件的字符串结果是否为真: temp[i-1] !== '+' || temp[i+1] !== '+' str[i-1] !== '+' && str[i+1] !== '+' 如果字母a到z出现,则在特定字母前后必须有“+” 如果“=”出现在字母之前或之后,则可以使用此选项。 为什么此条件对于“=”是错误的? 此代码为这些字符串返回true 谢谢 函数SimpleSymbols(str){ var temp=str.split(“”) 如果(温度长度=

任务是检查以下给定条件的字符串结果是否为真:

temp[i-1] !== '+' || temp[i+1] !== '+'
str[i-1] !== '+' && str[i+1] !== '+'
如果字母a到z出现,则在特定字母前后必须有“+” 如果“=”出现在字母之前或之后,则可以使用此选项。 为什么此条件对于“=”是错误的? 此代码为这些字符串返回true 谢谢

函数SimpleSymbols(str){ var temp=str.split(“”) 如果(温度长度==1 | |温度长度==2) 返回false; 对于(i=0;i='a'&&temp[i],条件
(temp[i-1]!='+'&&temp[i+1]!='+')
仅当字母前后的字符都不是加号时才为真。如果其中一个是加号,则条件为假

您需要将逻辑and更改为or运算符:
(temp[i-1]!='+'| | temp[i+1]!='+')

背景:德摩根定律 原始条件是字母周围有加号:

temp[i-1] === '+' && temp[i+1] === '+'
if
子句中,您测试该条件是否不匹配。因此,原始条件变为:

!(temp[i-1] === '+' && temp[i+1] === '+')
要使用not equals将其转换为条件,您需要应用,这基本上是说,如果您将否定因素考虑在内,逻辑and将变成or,反之亦然。这使得生成的条件:

temp[i-1] !== '+' || temp[i+1] !== '+'
str[i-1] !== '+' && str[i+1] !== '+'
只有当字母前后的字符都不是加号时,条件
(temp[i-1]!='+'&&temp[i+1]!='+')
才为真。如果其中一个是加号,则条件为假

您需要将逻辑and更改为or运算符:
(temp[i-1]!='+'| | temp[i+1]!='+')

背景:德摩根定律 原始条件是字母周围有加号:

temp[i-1] === '+' && temp[i+1] === '+'
if
子句中,您测试该条件是否不匹配。因此,原始条件变为:

!(temp[i-1] === '+' && temp[i+1] === '+')
要使用not equals将其转换为条件,您需要应用,这基本上是说,如果您将否定因素考虑在内,逻辑and将变成or,反之亦然。这使得生成的条件:

temp[i-1] !== '+' || temp[i+1] !== '+'
str[i-1] !== '+' && str[i+1] !== '+'

函数单符号(str){
var temp=str.split(“”)
如果(温度长度==1 | |温度长度==2)
返回false;
对于(i=0;i='a'&&temp[i]

函数单符号(str){
var temp=str.split(“”)
如果(温度长度==1 | |温度长度==2)
返回false;

对于(i=0;i='a'&&temp[i]提示:也检查这些字符串,它们都返回true,即使它们应该返回false

  • “+a4”
  • “1a+”
  • “%a+”
让我们简化您的情况:

temp[i-1] !== '+' || temp[i+1] !== '+'
str[i-1] !== '+' && str[i+1] !== '+'

!(str[i-1] === '+' || str[i+1] === '+')
这样可以更容易地查看您真正检查的内容

现在我们可以看到,条件
str[i-1]!='+'&&str[i+1]!='+'
仅当这两个字符都不是
+
时才返回true

如果至少有一个不是
+
,您希望它返回true。因此,您应该改用此选项:

str[i-1] !== '+' || str[i+1] !== '+'

我在这里用正确的条件重新编写了您的代码:

function SimpleSymbols(str) { 
    if (str.length == 1 || str.length == 2) return false;
    for (var i = 0; i < str.length; i++) {
        if (str[i] >= 'a' && str[i] <= 'z') {
            if (i === 0 || i === (str.length-1) || (str[i-1] !== '+' || str[i+1] !== '+')) {
                return false;
            }   
        }
    } 
    return true; 
}

提示:也检查这些字符串,它们都返回true,即使它们应该返回false

  • “+a4”
  • “1a+”
  • “%a+”
让我们简化您的情况:

temp[i-1] !== '+' || temp[i+1] !== '+'
str[i-1] !== '+' && str[i+1] !== '+'

!(str[i-1] === '+' || str[i+1] === '+')
这样可以更容易地查看您真正检查的内容

现在我们可以看到,条件
str[i-1]!='+'&&str[i+1]!='+'
仅当这两个字符都不是
+
时才返回true

如果至少有一个不是
+
,您希望它返回true。因此,您应该改用此选项:

str[i-1] !== '+' || str[i+1] !== '+'

我在这里用正确的条件重新编写了您的代码:

function SimpleSymbols(str) { 
    if (str.length == 1 || str.length == 2) return false;
    for (var i = 0; i < str.length; i++) {
        if (str[i] >= 'a' && str[i] <= 'z') {
            if (i === 0 || i === (str.length-1) || (str[i-1] !== '+' || str[i+1] !== '+')) {
                return false;
            }   
        }
    } 
    return true; 
}

“+d==+a+”给出true,它应该是false,“=d+==+a+”对于其余的情况,除了“=”,代码工作良好,我本可以使用正则表达式解决这个问题。为什么要将字符串拆分为数组?字符串无论如何都可以迭代。“+d===+a+”给出true,它应该是false,对于“=d+=+a+”也应该是false。”对于除“=”之外的其他情况,代码工作正常我本可以使用正则表达式解决此问题为什么要将字符串拆分为数组?字符串无论如何都可以迭代。@charlietfl:如果before或before不是
+
,则应为false,而不仅仅是如果两者都不是
+
。此解决方案是正确的。@charlietfl:If before或after都不是
+
它应该是false,而不仅仅是当两者都不是
+
时。此解决方案是正确的。