Python startswith()允许我测试一个字符串是否以字符串元组开头,如下所示,这是我想用JavaScript实现的:
testvar = 'he', 'hi', 'no', 'ye'
if my_string.startswith(testvar):
return True
我已经看到了这个SO question,并没有完全帮助实现这一目标。
我需要一个JavaScript代码,它将使用上面的Python代码执行相同的操作。
答案 0 :(得分:1)
您需要的只是一个简单的 Array 循环,其中一个答案显示在那里,
var testvar = ['he', 'hi', 'no', 'ye'];
function startsWith2(haystack, needles) {
var i = needles.length;
while (i-- > 0)
if (haystack.lastIndexOf(needles[i], 0) === 0)
return true;
return false;
}
startsWith2('hello world', testvar); // true
startsWith2('foo bar baz', testvar); // false
同样适用于endsWith
;
function endsWith2(haystack, needles) {
var i = needles.length, j, k = haystack.length;
while (i-- > 0) {
j = k - needles[i].length;
if (j >= 0 && haystack.indexOf(needles[i], j) === j)
return true;
}
return false;
}
答案 1 :(得分:1)
由于已经有很多解决方案将数组作为参数传递,我将发布一个解决方案splat“*”样式参数:
String.prototype.startsWithSplat = function(){
var args = Array.prototype.slice.call(arguments, 0, arguments.length);
var i;
var matched = false;
var self = this;
for(i = 0; i < args.length; i++){
if(self.slice(0, args[i].length) == args[i]){
matched = true;
break;
}
}
return matched;
}
然后你可以打电话:
my_string.startswith('he', 'hi', 'no', 'ye');
答案 2 :(得分:0)
因为他们可以完全相同的长度:
testvar = ['he', 'hi', 'no', 'ye']
return testvar.indexOf(my_string.substring(0,2)) > -1
还有一些例子:
// Examples:
testvar = ['he', 'hi', 'no', 'ye']
my_string = 'hello'
testvar.indexOf(my_string.substring(0,2)) > -1
true
my_string = 'apples'
testvar.indexOf(my_string.substring(0,2)) > -1
false
答案 3 :(得分:0)
您可以对您的测试数组运行reduce操作,以查找变量是否以其中任何一个开头。
var testVar = ['he', 'hi', 'no', 'ye'];
var myString = 'hello';
var startsWithAny = testVar.reduce(function (returnValue, currentTest) {
return returnValue || myString.startsWith(currentTest);
});
if (startsWithAny) {
return true;
}
答案 4 :(得分:0)
var testvar = ['he','hi','no','ye'];
var str = "hello";
for(i = 0; i < testvar.length; i++)
{
if (str.startsWith(testvar[i]) == true)
console.log(str+" starts with: "+testvar[i]);
}