2017-01-06 6 views
2

Wie überprüfen Sie, ob ein Zeichen in einer Zeichenfolge ein bestimmtes Zeichen in JS ist? Zur Zeit habe ich einen Code, der jeden Buchstaben einer Zeichenkette prüft und dann durch eine riesige if/else-Anweisung geht, um zu prüfen, welcher Buchstabe es ist, und ich fragte mich, ob es einen effizienteren Weg gab, dies zu tun?Wie überprüfe ich, ob ein Zeichen in einer Zeichenfolge ein bestimmtes Zeichen in JavaScript ist?

Beispiel

var string = "hello"
ich es alle fünf der Buchstaben zu testen und sehen, welchen Buchstaben es ist, und haben es etwas tun, basierend auf welchen Buchstaben es ist, so dass, wenn der erste Buchstabe h dann einige laufen code und wenn der erste Buchstabe ein ist dann tu nichts und springe zum nächsten Buchstaben hinüber.

+2

einige Codes anzeigen bitte. –

+1

Was ist die Definition von * specific * in Ihrer Frage? – trincot

+2

Glückwunsch zum 13-jährigen Programmierer !!! - Das allein ist beeindruckend. Kannst du bitte die Frage klären? was genau willst du in der string finden? – ochi

Antwort

1

Es gibt viele Möglichkeiten, dies zu erreichen, könnten Sie beispielsweise eine Reihe von if-else-Anweisungen oder eine switch-Anweisung, würde ich eine andere vorschlagen obwohl Option:

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]](); 
    } 
} 

Diese Sie Sie haben nicht zu „wissen“, was Charakter Sie sind hier in der Schleife, nur wenn etwas für sie passieren sollte.

Und als Referenz, die gleiche Sache mit if-else-Anweisungen zu erreichen:

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'); 
    } 
} 

Und mit switch-Anweisung:

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; 
    } 
} 
+1

Etwas Ähnliches gemacht (Array von Objekten), aber nicht sicher über den Kontext und die Effizienz von OP: https://jsfiddle.net/trt9rpez/ :) – sinisake

1

Beispiel mit JS

Überprüfen Sie, ob eine Zeichenfolge enthält mit "Welt":

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

Das Ergebnis n wird:

true 

Das gleiche in eine auf einzelne Zeichen gilt einzelnes Wort

Danksagungen: http://www.w3schools.com/jsref/jsref_includes.asp

+0

Für mich ist das nicht der Fall Ihre Antwort scheint sich auf die gestellte Frage zu beziehen, obwohl es nicht ganz klar ist, was OP verlangt. –

+0

Benutzer hat die Frage bearbeitet, und basierend auf neuen Anforderungen, Sie sind richtig Alan, das ist keine Antwort, die er gesucht hat – SergioAMG

+0

Wenn ich Sie richtig verstehe, möchten Sie etwas _other than_ eine Sequenz von if ... sonst wenn verwenden. .. Anweisungen, dies zu tun. Du wirst uns wirklich mehr geben müssen, um hier weiterzumachen. Zum Beispiel, posten Sie, wie Ihr bestehender Code aussieht - wie hässlich er auch sein mag. Wenn es zeigt, was Sie vorhaben zu erreichen, wird jemand mehr in der Lage sein, Sie zu führen. Wie jemand anders sagte, herzlichen Glückwunsch zum 13-jährigen Programmierer! Mach weiter. Das ist es wert. –

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 ist eine Mehrwegverzweigung. Es gibt andere Möglichkeiten, die Zeichenfolge zu teilen. In der Praxis ist es unwahrscheinlich, dass es einen merklichen Leistungsunterschied zwischen der Verwendung einer Fallanweisung und einer Sequenz von if...else if....else if gibt, aber es sorgt für eine bessere Lesbarkeit.

Einige Sprachen enthalten auch Konstrukte, in denen Sie eine Routine definieren können, die zur Laufzeit aufgerufen wird. Dies ist auch möglich mit Javascript aber macht es sehr einfach, schlechte Fehler zu machen und schwer zu debuggen/testen/sie. Im Folgenden wird als Beispiel zur Verfügung gestellt von schlecht Programmierung:

function fna() 
{ 
    ... 
} 
function fnb() 
{ 
    ... 
} 
... 
function fnz() 
{ 
    ... 
} 

var fn_to_call='fn' + str.substr(0,1).tolower() + '();'; 
eval(fn_to_call); 
Verwandte Themen