Як ведаць радок пачынаецца/сканчаецца спецыфікай у JavaScript?

 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'
  • Ці мае супадзенне() працуе, ці я павінен выкарыстоўваць IndexOf()
1
Глядзіце таксама: Javascript StartsWith
дададзена аўтар Bergi, крыніца
Глядзіце таксама: EndsWith() у JavaScript .
дададзена аўтар Ja͢ck, крыніца
Глядзіце таксама: EndsWith() у JavaScript .
дададзена аўтар Ja͢ck, крыніца
Паглядзіце на Шар() , ёсць некаторыя прыклады ёсць якія паказваюць, як атрымаць першыя/апошнія сімвалы радкі
дададзена аўтар naththedeveloper, крыніца

13 адказы

<�Р> Ці ёсць матч() працуе, ці я павінен выкарыстоўваць 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');
6
дададзена
@Jack: Так, для гэтага вам трэба замяніць && з || . Я не прытрымлівацца тэкставае апісанне, але мадыфікаваны код OPS, які меў, што <�я>, калі пачынаецца з і заканчваецца тады несапраўдным ...
дададзена аўтар Bergi, крыніца
Ах! Добры пытанне, ці не зразумеў, код і «функцыі» былі розныя :)
дададзена аўтар Ja͢ck, крыніца
Гэта не строга задавальняе ўмове «не павінна пачынацца з {і не павінны заканчвацца}»
дададзена аўтар Ja͢ck, крыніца
<�Р> Ці ёсць матч() працуе, ці я павінен выкарыстоўваць 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');
6
дададзена
@Jack: Так, для гэтага вам трэба замяніць && з || . Я не прытрымлівацца тэкставае апісанне, але мадыфікаваны код OPS, які меў, што <�я>, калі пачынаецца з і заканчваецца тады несапраўдным ...
дададзена аўтар Bergi, крыніца
Ах! Добры пытанне, ці не зразумеў, код і «функцыі» былі розныя :)
дададзена аўтар Ja͢ck, крыніца
Гэта не строга задавальняе ўмове «не павінна пачынацца з {і не павінны заканчвацца}»
дададзена аўтар Ja͢ck, крыніца
if (str.charAt(0) == 'a' && str.charAt(str.length-1) == 'b') {
    //The str starts with a and ends with b
}

Неправераная, але ён павінен працаваць

3
дададзена
if (str.charAt(0) == 'a' && str.charAt(str.length-1) == 'b') {
    //The str starts with a and ends with b
}

Неправераная, але ён павінен працаваць

3
дададзена

гэта

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

вяртае ісціну ў вул пачынаецца з { і заканчваецца }

1
дададзена
... і не ўтрымлівае лініі тэрмінатара :-)
дададзена аўтар Bergi, крыніца

гэта

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

вяртае ісціну ў вул пачынаецца з { і заканчваецца }

1
дададзена
... і не ўтрымлівае лініі тэрмінатара :-)
дададзена аўтар Bergi, крыніца
file.indexOf("{") == 0 && file.lastIndexOf("}") == file.length-1
0
дададзена
file.indexOf("{") == 0 && file.lastIndexOf("}") == file.length-1
0
дададзена
<�Р> У «файл» радок не павінна пачынацца з «{» і не павінны заканчвацца «}»
    if (file.charAt(0) == '{' || file.charAt(file.length - 1) == '}') {
        throw 'invalid file';
    }
<�Р> У "imgFile" радок не павінна заканчвацца '.json'
    if (imgFile.lastIndexOf('.json') === imgFile.length - 5) {
        throw 'invalid imgFile';
    }
0
дададзена
<�Р> У «файл» радок не павінна пачынацца з «{» і не павінны заканчвацца «}»
    if (file.charAt(0) == '{' || file.charAt(file.length - 1) == '}') {
        throw 'invalid file';
    }
<�Р> У "imgFile" радок не павінна заканчвацца '.json'
    if (imgFile.lastIndexOf('.json') === imgFile.length - 5) {
        throw 'invalid imgFile';
    }
0
дададзена

Вы можаце выкарыстоўваць яваскрипт 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;
};
0
дададзена
@HBP: Што нават у выпадку тут ( .json ), таму гэты адказ з'яўляецца памылковым
дададзена аўтар Bergi, крыніца
Працуе нармальна, калі суфікс не ўтрымлівае спецыяльныя сімвалы, такія як RegEx. ці/або *.
дададзена аўтар HBP, крыніца
Вы можаце проста папрасіць, каб выправіць гэта, калі ўлада downvote і> 1к рэсп аленевай скуры азначае, што вы можаце пайсці на downvoting ..
дададзена аўтар argentum47, крыніца

Вы можаце выкарыстоўваць яваскрипт 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;
};
0
дададзена
@HBP: Што нават у выпадку тут ( .json ), таму гэты адказ з'яўляецца памылковым
дададзена аўтар Bergi, крыніца
Працуе нармальна, калі суфікс не ўтрымлівае спецыяльныя сімвалы, такія як RegEx. ці/або *.
дададзена аўтар HBP, крыніца
Вы можаце проста папрасіць, каб выправіць гэта, калі ўлада downvote і> 1к рэсп аленевай скуры азначае, што вы можаце пайсці на downvoting ..
дададзена аўтар argentum47, крыніца

У вас ёсць шмат варыянтаў, калі справа даходзіць да радка праверкі, вы можаце выкарыстоўваць regex..different радковых метады таксама можа зрабіць працу за вас ...

Але ваша праблема, вы можаце паспрабаваць наступнае:

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

У другой частцы, яе найбольш верагодна, што вы шукаеце пашырэнне файла, так што вы можаце выкарыстоўваць наступнае:

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

Спадзяюся, што гэта дапамагае ....

0
дададзена