【问题标题】:How to know a string starts/ends with specific character in javascript? [duplicate]如何知道字符串以javascript中的特定字符开始/结束? [复制]
【发布时间】:2013-05-18 12:34:00
【问题描述】:
 var file = "{employee}";
 var imgFile = "cancel.json";

  if(file starts with '{' and file ends with '}' ){
     alert("invalid");
  }
  if(imgFile ends with '.json'){
    alert("invalid");
  }
  • 如何使用javascript验证字符串的开始和结束字符?
  • 在“文件”中,字符串不应以 '{' 开头,也不应以 '}' 结尾
  • 在“imgFile”中,字符串不应以“.json”结尾
  • match() 有效还是我应该使用 indexOf()

【问题讨论】:

标签: javascript string validation


【解决方案1】:

你可以使用javascript的startswith()和endswith()

    function strStartsWith(str, prefix) {
    return str.indexOf(prefix) === 0;
}
function strEndsWith(str, suffix) {
return str.indexOf(suffix, str.length - suffix.length) !== -1;
}
or
function strEndsWith(str, suffix) {
var re=new RegExp("."+suffix+"$","i");
if(re.test(str)) alert("invalid file");

}

或者你也可以像这样使用它:

String.prototype.startsWith = function (str){
return this.slice(0, str.length) == str;
};
 and

String.prototype.endsWith = function (str){
return this.slice(-str.length) == str;
};

【讨论】:

  • 工作正常,除非后缀包含特殊的 RegEx 字符,如 .或/或*。
  • @HBP:即使是这里的情况(.json),所以这个答案是无效的
  • 您可以要求更正它,如果您有权投反对票并且 >1k 代表并不意味着您可以继续投反对票..
【解决方案2】:

match() 有效还是我应该使用 indexOf()

两者都没有。两者都有效,但都搜索整个字符串。在相关位置提取子字符串并将其与您期望的位置进行比较会更有效:

if (file.charAt(0) == '{' && file.charAt(file.length-1) == '}') alert('invalid');
// or:                       file.slice(-1) == '}'
if (imgFile.slice(-5) == '.json') alert('invalid');

当然,你也可以使用正则表达式,借助智能正则表达式引擎,它应该也很高效(而且你的代码更简洁):

if (/^\{[\S\s]*}$/.test(file)) alert('invalid');
if (/\.json$/.test(imgFile)) alert('invalid');

【讨论】:

  • 这并不严格满足“不能以{开头,不能以}结尾”的条件
  • @Jack:是的,为此您需要将&& 替换为||。我没有按照文字描述,而是修改了具有 if 以 then 开头和结尾的 OPs 代码无效 ...
  • 啊!好点,没有意识到代码和“规格”不同:)
【解决方案3】:

这个

 /^\{.*\}$/.test (str)

将返回 true 的 str{ 开头并以 } 结尾

【讨论】:

  • …并且不包含行终止符:-)
【解决方案4】:

在字符串验证方面你有很多选择,你可以使用正则表达式..不同的字符串方法也可以为你完成这项工作......

但是你的问题你可以尝试以下方法:

if(file.indexOf('{') == 0 && file.indexOf('}') == file.length - 1) 
        alert('invalid');

对于第二部分,您很可能正在寻找文件的扩展名,因此您可以使用以下内容:

if(imgFile.split('.').pop() == "json")
    alert('invalid');   

希望这会有所帮助....

【讨论】:

    【解决方案5】:
    file.indexOf("{") == 0 && file.lastIndexOf("}") == file.length-1
    

    【讨论】:

      【解决方案6】:

      在“文件”中,字符串不应以'{'开头,也不应以'}'结尾

          if (file.charAt(0) == '{' || file.charAt(file.length - 1) == '}') {
              throw 'invalid file';
          }
      

      在“imgFile”中,字符串不应以'.json'结尾

          if (imgFile.lastIndexOf('.json') === imgFile.length - 5) {
              throw 'invalid imgFile';
          }
      

      【讨论】:

        【解决方案7】:
        if (str.charAt(0) == 'a' && str.charAt(str.length-1) == 'b') {
            //The str starts with a and ends with b
        }
        

        未经测试,但应该可以工作

        【讨论】:

          猜你喜欢
          • 2011-04-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-02-20
          • 2019-06-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多