如何检查字符串中的字符是否是JS中的特定字符?目前我有代码检查字符串的每个字母,然后通过一个巨大的if / else语句检查它是什么字母,我想知道是否有更有效的方法来做到这一点?
实施例
var string = "hello"
答案 0 :(得分:1)
JS的例子
检查字符串是否包含" world":
var str = "Hello world, welcome to the universe.";
var n = str.includes("world");
n的结果将是:
true
同样适用于单个单词中的单个字符
答案 1 :(得分:1)
有很多方法可以实现这一点,例如,您可以使用一系列if-else语句或switch语句,但我建议使用不同的选项:
var str = 'hello',
actions = { // Define actions (function to call) you want for specific characters
h: function () {
// Do something if character was 'h'
console.log('h');
},
l: function () {
// Do something if character was 'l'
console.log('l');
},
o: function () {
// Do something if character was 'o'
console.log('o');
}
};
for (var i = 0; i < str.length; i++) {
if (actions[str[i]]) { // If there is an action/function defined for the current character then call the function
actions[str[i]]();
}
}
这样你就不必“知道”你现在在循环中扮演什么角色,只有当某些事情发生时才会发生。
作为参考,使用if-else语句实现相同的目的:
var str = 'hello';
for (var i = 0; i < str.length; i++) {
if (str[i] === 'h') {
// Do something if character was 'h'
console.log('h');
}
else if (str[i] === 'l') {
// Do something if character was 'l'
console.log('l');
}
else if (str[i] === 'o') {
// Do something if character was 'o'
console.log('o');
}
}
使用switch语句:
var str = 'hello';
for (var i = 0; i < str.length; i++) {
switch (str[i]) {
case 'h':
// Do something if character was 'h'
console.log('h');
break;
case 'l':
// Do something if character was 'l'
console.log('l');
break;
case 'o':
// Do something if character was 'o'
console.log('o');
break;
}
}
答案 2 :(得分:0)
function do_something(str)
{
switch (str.substr(0,1).tolower()) {
case 'h':
// call function something_else with the remainder of the string
something_else(str.substr(1,str.length));
break;
case 'z':
another_thing();
break;
default:
// no need to explicitly add a case for 'h' - its handled here
break;
}
}
switch是一个多向分支。还有其他方法可以切割字符串。在实践中,使用case语句与if...else if....else if
序列之间的性能不太可能有显着差异,但它确实提高了可读性。
某些语言还提供了一些结构,您可以在其中定义在运行时调用的例程。使用javascript 也可以实现这一点,但是很容易犯错误并且很难调试/测试它们。以下是错误编程的示例:
function fna()
{
...
}
function fnb()
{
...
}
...
function fnz()
{
...
}
var fn_to_call='fn' + str.substr(0,1).tolower() + '();';
eval(fn_to_call);