输入中的字符串和运行时的字符串是否相等?

时间:2015-08-18 12:47:04

标签: javascript string

因此,我尝试阅读<textarea>输入,将其分成单独的单词,然后检查每个单词是否等于关键字列表中的单词。

我已经完成了代码,当我测试时,它没有工作。当我调试它时,我看到当它比较来自<textarea>的字符串和一个看起来相同的常量字符串时,它认为它们是不相等的。

我试图从<textarea>中取出字符串(完全相同,复制粘贴它)并将其与静态字符串静态比较,然后它变为真。

如果你知道问题可能是什么,我会很高兴听到。 感谢。

代码:

function run() {
    debugger;

    code = document.getElementById("codeArea").value;
    cleanDots();
    words = code.split(" ");
    compile();
}

function compile() {    
    for (i = 0; i < words.length; i++) {
        var w = words[i];
        if (w == "test") 
            alert("test - true");
    }
}

function cleanDots() {
    for (var j = 0; j < code.length; j++) {
        if (code.charAt(j) == ".") {
            var p1 = code.substring(0, j);
            var p2 = code.substring(j + 1, code.length);

            code = p1 + " " + p2;
        }
    }
}

HTML:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>דוס סקריפט סביבת פיתוח</title>
    <style type="text/css">
        body{
            padding: 0;
            margin: 0;      
        }
        textarea{
            width: 95%;
            padding: 10px;
            height: 700px;
            text-align: right;
            float: right;       
        }
        button{
            width: 95%;
            padding: 10px;
            text-align: center;
            float: right;
            background-color: green;
        }
    </style>
</head>
<body>
    <textarea id="codeArea">

    </textarea>
    <button id="submit" onclick="run()">הרץ</button>

    <script src="compiler.js"></script>
    <script src="methods.js"></script>
</body>
</html>

3 个答案:

答案 0 :(得分:1)

首先,您在cleanDots函数中实际执行的是实现JavaScript replace()方法,此函数应如下所示:

function cleanDots() {
    code = code.replace(".", " ");
}

&#13;
&#13;
function run() {
  debugger;

  code = document.getElementById("codeArea").value;
  cleanDots();
  words = code.split(" ");
  compile();
}

function compile() {
  for (i = 0; i < words.length; i++) {
    var w = words[i];
    if (w == "test")
      alert("test - true");
  }
}
&#13;
body {
  padding: 0;
  margin: 0;
}
textarea {
  width: 95%;
  padding: 10px;
  height: 700px;
  text-align: right;
  float: right;
}
button {
  width: 95%;
  padding: 10px;
  text-align: center;
  float: right;
  background-color: green;
}
&#13;
<textarea id="codeArea">

</textarea>
<button id="submit" onclick="run()">הרץ</button>

<script src="compiler.js"></script>
<script src="methods.js"></script>
&#13;
&#13;
&#13;

除此之外,您的代码将执行得很好。

答案 1 :(得分:0)

在cleanDots函数中,您希望用空格替换所有点 你可以这样做:

function cleanDots() {
      code = code..replace(/[\.]/g, " ");
}

使用/[.]/g正则表达式,您尝试了所有出现的点,然后用空格替换它。

答案 2 :(得分:0)

我真的不知道问题是什么。 我重写了一些代码,在浏览器中重新打开它,然后就可以了。 我发现代码和新代码之间没有任何区别。

我发现的唯一差异是从if switch更改,但我检查过,现在它也适用于if。我改变的另一件事是替换我的&#34; cleanDots&#34;使用code.replace(".", " ")的方法,建议使用 chsdk 。我也在这里查了一下,而且我的方法也很好用。

新代码:

function run() {
        debugger;

        code = document.getElementById("codeArea").value;
        code = code.replace(".", " ");
        words = code.split(" ");
        compile();
}

function compile() {    
    for (i = 0; i < words.length; i++) {
        var w = words[i];
        switch(w) { 
            case "הדפס":
                dosPrint();
                break;      
        }
    }
}

非常感谢。