如何检查字符串中的字符是否是JavaScript中的特定字符?

时间:2017-01-06 22:25:25

标签: javascript

如何检查字符串中的字符是否是JS中的特定字符?目前我有代码检查字符串的每个字母,然后通过一个巨大的if / else语句检查它是什么字母,我想知道是否有更有效的方法来做到这一点?

实施例

var string = "hello"
我希望它测试所有五个字母并查看它是什么字母,并根据它是什么字母做一些事情,所以如果第一个字母是h然后运行一些代码,如果第一个字母是a然后什么都不做,跳到下一个要检查的字母。

3 个答案:

答案 0 :(得分:1)

JS的例子

检查字符串是否包含" world":

var str = "Hello world, welcome to the universe.";
var n = str.includes("world");

n的结果将是:

true

同样适用于单个单词中的单个字符

致谢:http://www.w3schools.com/jsref/jsref_includes.asp

答案 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);