测试两个字符串的lastIndex

时间:2014-02-17 05:19:13

标签: javascript string

假设这个功能:

function renameDoc() {
    var newFilename = prompt("Name this document:", filename);
    if (newFilename !== null) {
      if (newFilename === "") {
        changeFilename(); // "untitled.txt"
      } else {
        changeFilename(newFilename.lastIndexOf(".txt") == -1 ?
          newFilename + ".txt" : newFilename);
      }
      return true;
    }
  }

此功能测试newFilename最后是否.txt。这很有效。

但想要检查newFilename.txt.还是.md

我正在尝试这个

function renameDoc() {
    var newFilename = prompt("Name this document:", filename);
    if (newFilename !== null) {
      if (newFilename === "") {
        changeFilename(); // "untitled.txt"
      } else {
        changeFilename((newFilename.lastIndexOf(".txt") && newFilename.lastIndexOf(".md")) == -1 ?
          newFilename + ".txt" : newFilename);
      }
      return true;
    }
  }

似乎没有完美运作。

你能帮我解决这个问题。

2 个答案:

答案 0 :(得分:2)

(newFilename.lastIndexOf(".txt") === -1 && newFilename.lastIndexOf(".md") === -1)

该语句检查它是否没有.txt且没有.md。例如,如果它以.jpeg

结尾,则返回true

答案 1 :(得分:2)

你可以用这个:

/\.(md|txt)$/.test(newFilename)

测试文件名是否以“.md”或“.txt”结尾

在您的功能中,您可以这样做:

changeFilename(
    /\.(md|txt)$/.test(newFilename)
        ? newFilename
        : newFilename + ".txt"
);