2016-12-03 3 views
0

Sätze:Überprüfen Sie, ob Satz enthält einen Satz

  1. Hey Kasse Hallo Welt < - ENTHALTEN WERDEN SOLL
  2. Hallo Welt ist schön! < - SOLL
  3. hhello Welt AUFZUNEHMENDE nicht < funktionieren soll - NICHT
  4. Auch die Hhhello Welt < ENTHALTEN SOLL -, sollten Sie nicht

var phraseToSearch = "Hello World";

HINWEIS ENTHALTEN:sentence.ToLower().IndexOf(phraseToSearch.ToLower()) würde funktioniert nicht, da es alle obigen Sätze einschließen würde, während das Ergebnis nur die Sätze 1 und 2 enthalten sollte

+0

'/ \ bhello \ sworld \ b/gi' – adeneo

Antwort

3

Sie können einen regulären Ausdruck verwenden, um ein Zeichenmuster mit einer Zeichenfolge abzugleichen.

Der reguläre Ausdruck sucht einfach für Hello World die genauen Buchstaben, die Sie suchen mit \b ein Wort Grenze und mit dem i Groß- und Kleinschreibung Modifikator.

Regex hat eine Methode test, die den regulären Ausdruck für die angegebene Zeichenfolge ausführen wird. Es wird ein Wahr zurückgegeben, wenn der reguläre Ausdruck übereinstimmt.

const phraseToSearch = /\bhello world\b/i 
 

 
const str1 = 'Hey checkout Hello World' 
 
const str2 = 'hello world is nice!' 
 
const str3 = 'Hhello World should not work' 
 
const str4 = 'This too Hhhello World' 
 

 
console.log(
 
    phraseToSearch.test(str1), 
 
    phraseToSearch.test(str2), 
 
    phraseToSearch.test(str3), 
 
    phraseToSearch.test(str4) 
 
)

1

Sie wollen wahrscheinlich einen regulären Ausdruck verwenden. Hier sind die Dinge, die Sie

  • Text (mit Leerzeichen umgebenden)
  • ... Text (mit Platz auf der einen Seite, und am Ende des Textes auf der anderen Seite)
  • Text ... (mit Platz auf einer Seite passen wollen und auf der anderen Seite beginnen)
  • Text (nur die Zeichenfolge, auf seiner eigenen)

eine Möglichkeit, dies zu tun, ohne einen regulären Ausdruck, jus ist t, um 4 Bedingungen (eine für jeden Aufzählungspunkt oben) zu setzen und sie mit einer && zusammenzufügen, aber das würde zu unordentlichem Code führen.

Eine weitere Option besteht darin, beide Strings durch Leerzeichen zu trennen und zu prüfen, ob ein Array ein Subarray eines anderen ist.

Allerdings verwendet meine Lösung einen regulären Ausdruck - das ist ein Muster, das Sie auf einer Zeichenfolge testen können.

Unser Muster sollte

  • Suchen Sie nach einem Raum/Anfang Zeichenfolge
  • prüfen für die Zeichenfolge
  • Suchen Sie nach einem Raum/Ende der Zeichenkette

\b, nach this , werden Leerzeichen, Worttrennzeichen und Zeichenfolgen abgeglichen. Diese Dinge nennt man Wortgrenzen. Hier

ist der Code:

function doesContain(str, query){ // is query in str 
    return new RegExp("\b" + query + "\b", "i").test(str) 
} 

Die i macht das Spiel Groß- und Kleinschreibung.

Verwandte Themen