JavaScript, wenn die Zeichenfolge in einer durch Kommas getrennten Zeichenfolge ist

8

Ich habe eine Zeichenfolge wie folgt: str = "ball, apple, mouse, kindle";

und ich habe einen anderen Text in dieser Zeichenfolge zu suchen: search = 'apple';

Wie kann JavaScript verwendet werden, wenn apple in einer durch Kommas getrennten Zeichenfolge vorhanden ist?

P.S: str kann mit oder ohne Leerzeichen zwischen Komma und dem nächsten Element stehen.

    
impress 08.08.2014, 18:27
quelle

7 Antworten

10

Einfache Lösung:

%Vor%

Das stimmt jedoch auch überein, wenn str "Apfelküchlein" enthält:

%Vor%

Es gibt verschiedene Ansätze, um gezielter zu werden. Eine wäre es, die Zeichenfolge in Kommas zu teilen und dann durch alle Teile zu durchlaufen:

%Vor%

HINWEIS: Sie können diesen Code mithilfe der integrierten "some" -Methode vereinfachen, dies ist jedoch nur in neueren Browsern möglich. Sie können auch die Underscore-Bibliothek verwenden, die eine eigene "Some" -Methode bereitstellt, die in jedem Browser funktioniert.

Alternativ könnten Sie einen regulären Ausdruck verwenden, um "Apfel" spezifisch zu finden:

%Vor%

Aber ich denke, Ihre beste Chance ist es, das nicht selbst zu versuchen. Wann immer Sie ein Problem wie dieses haben, ist es am besten, eine vorhandene Bibliothek zu nutzen. Ein Beispiel wäre die Underscore String-Bibliothek, insbesondere wenn Sie Underscore bereits verwenden. Wenn nicht, gibt es andere universelle String-Utility-Bibliotheken (z. B. String.js), die Sie stattdessen verwenden können.

    
machineghost 08.08.2014, 18:29
quelle
9

Um wirklich zu testen, ob die exakte Zeichenfolge "apple" ein Element in Ihrer kommagetrennten Liste ist (und nicht nur eine Teilzeichenfolge der gesamten Zeichenfolge), können Sie (optionale Leerzeichen vor und nach dem Wert berücksichtigen):

Wenn Array#indexOf verfügbar ist:

%Vor%

Wenn Array#some verfügbar ist:

%Vor%

Mit einem regulären Ausdruck :

%Vor%     
Felix Kling 08.08.2014 18:35
quelle
2

Sie können die Zeichenfolge in ein Array umwandeln und prüfen, ob die Suchzeichenfolge darin enthalten ist.

%Vor%

Die Suche SearchIndex repräsentiert die Position im Array. Wenn der Suchindex & lt; 0 Der Artikel wurde nicht gefunden.

    
Idan Magled 08.08.2014 18:32
quelle
2

Sie können dies auf sehr einfache, aber fehleranfällige Weise tun, um den Index der Zeichenkette apple in Ihrer kommagetrennten Liste zu überprüfen:

%Vor%

Überprüfen Sie das Ergebnis ist >-1 sagt Ihnen, dass die str die Zeichenfolge apple enthält. Dies führt jedoch zu falsch positiven Ergebnissen, beispielsweise str :

%Vor%

Das wird Ihnen immer noch einen Index für apple geben, das ist >-1 - wahrscheinlich nicht das, was Sie wollen.

    
Jamiec 08.08.2014 18:32
quelle
2

Sie können String.split() und Array.indexOf () .

%Vor%     
undefined 08.08.2014 18:32
quelle
1

Bitte beachten Sie, dass Sie für diesen Code die jquery library

benötigen %Vor%     
doniyor 08.08.2014 18:31
quelle
1

Es gibt einige gute Antworten hier, aber ich dachte, ich würde eine Alternative mit Regex geben. Dies wird nicht zwischen Groß- und Kleinschreibung unterschieden, so dass "Apple" oder "Apple" übereinstimmen. Es passt auch nicht zu "Appleby's" oder "Apple Pie", so dass Ihnen falsche Positives erspart bleiben (oder die Regex kann geändert werden, um diese einzuschließen):

%Vor%

Das war der grundlegende Regex. Hier ist es in einer Funktion und mit einigen Tests:

%Vor%

Hier ist die Ausgabe:

  

"Apfel" wurde in "Ball, Apfel, Maus, Kindle" gefunden

     

"Apfel" wurde nicht gefunden in "Ball, Apfelkuchen, Haus, Katze"

     

"Apfel" wurde in "Ball, Apfel, Haus, Katze" gefunden.

     

"Apfel" wurde nicht gefunden in "Ball, Applebys, Pfirsich, Hund"

    
John L 08.08.2014 20:31
quelle

Tags und Links