JavaScript或jQuery字符串以实用程序函数结束

Jon*_*son 75 javascript jquery

找出字符串是否以某个值结束的最简单方法是什么?

clo*_*ead 151

你可以使用Regexps,像这样:

str.match(/value$/)
Run Code Online (Sandbox Code Playgroud)

如果字符串的末尾有'value'($),则返回true.

  • match() 不返回布尔值。'foobar'.match(/bar$/) 返回 ["bar"] (2认同)
  • 如果我们只想要一个布尔结果,RegEx Search() 而不是 Match() 将是更好的选择。如果没有找到,Search() 将返回 -1。if(str.search(/value$/) != -1) https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/search (2认同)

Luc*_*eis 39

从prototypejs被盗:

String.prototype.endsWith = function(pattern) {
    var d = this.length - pattern.length;
    return d >= 0 && this.lastIndexOf(pattern) === d;
};

'slaughter'.endsWith('laughter');
// -> true
Run Code Online (Sandbox Code Playgroud)

  • 你不应该这样做,因为它不能保证在JS的所有实现中都有效:ECMAScript Compact Profile规范(ECMA-327:http://www.ecma-international.org/publications/standards/Ecma-327. htm)指定"紧凑"实现(例如在诸如电话的手持设备上)不需要支持它(参见5.2节).即使你不为此烦恼,它很可能会破坏JS的新版本:例如,任何过去曾部署代码的人都会向Array.prototype添加"forEach"方法,现在正在打破本机实现在最新版本的Firefox中. (9认同)
  • 有些人认为修改核心类的原型是你不应该做的事情--Crockford在他的书"JavaScript:The Good Parts"中将其称为"全球减少". (5认同)
  • 你为什么不这样做?或者你只是不这样做因为克罗克福德说过吗? (4认同)
  • 如果有人不想修改String,他们可以很容易地将它变成一个独立的功能. (3认同)

Che*_*try 9

常用表达

"Hello world".match(/world$/)
Run Code Online (Sandbox Code Playgroud)


Joh*_*kel 6

你可以的'hello world'.slice(-5)==='world'。在所有浏览器中均可使用。比正则表达式快得多。


the*_*erm 5

我对比赛的方法没有运气,但这有效:

如果你有字符串,"这是我的字符串." 并想知道它是否以句号结束,请执行以下操作:

var myString = "This is my string.";
var stringCheck = ".";
var foundIt = (myString.lastIndexOf(stringCheck) === myString.length - stringCheck.length) > 0;
alert(foundIt);
Run Code Online (Sandbox Code Playgroud)

您可以将变量stringCheck更改为要检查的任何字符串.更好的是将这个放在你自己的函数中,如下所示:

function DoesStringEndWith(myString, stringCheck)
{
    var foundIt = (myString.lastIndexOf(stringCheck) === myString.length - stringCheck.length) > 0;
    return foundIt;
}
Run Code Online (Sandbox Code Playgroud)