2017-02-24 1 views
1

I wie !find England Michanel einen Befehl zu machen versuchen, mit einem Namen Michael deren Live in England Liste von Personen zurückzukehren.Javascript Split für String mit Leerzeichen

let [country, name] = input.split(" ").slice(1); 

Das gibt mir genaue Daten, die ich will. Aber das Problem ist, wenn der Kreis Name mehr als ein Wort wie USA und auch für Personennamen wie John Doe ist. Wenn ich mich anwende, wird meine aktuelle Logik wie sein; country = United, name = States und ignoriert den Rest danach.

Gibt es eine Möglichkeit, den Namen eines Landnamens mit Leerzeichen korrekt abzurufen? Danke

+1

Sie müssten eine spezielle Analyse durchführen. Sie können überprüfen, dass der Name des Landes mit "United" beginnt und daraus schließen, dass der Name des Landes 2 Wörter ist, aber es ist eine ziemlich beschissene Art, damit umzugehen. Das ist eigentlich ein ziemlich häufiges Problem. Ich habe gesehen, dass es gelöst wurde, indem ich es entweder (united-states) oder Unterstriche (united_states) stürzte. Darüber hinaus müssen Sie entweder eine unscharfe Suche durchführen oder sich auf einen Suchanbieter wie Solr verlassen. –

+0

Wie sieht 'Eingabe' aus? hast du die Kontrolle darüber? Bitte geben Sie ein Beispiel für "Eingang" –

+0

Sie müssen zunächst über die Bildung des Eingangs spezifisch sein. – Mamun

Antwort

1

Ich nehme an, Sie holen Ihre Daten von irgendeiner Art Datenbank? Ok, viele davon mit hier:

1) Sie können einfach nicht den Raum als Trennzeichen verwenden (weiß nicht, ob Sie diese Option)

2) haben Moment Sie Ihre Daten abrufen, ersetzen der Raum mit ea "~". ("Vereinigte Staaten"). Nachdem Sie „United ~ States“ auf das Array aufgeteilt und weisen Sie, ersetzen Sie die „~“ wieder (oder nur incl ~.)

0

ich Sie wirklich wollen, dies zu unterstützen und Sie sich nicht kümmern, zusätzliche Latenz:

versuchen Sie, alle drei:

finden Vereinigte Staaten John Doe:

Jeder genannte "Doe" in dem Land, "Vereinigte Staaten John"

Jeder genannt "John Doe" in "USA" und

Jeder nannte "States John Doe" in "United"

Seine zusätzliche Arbeit beantwortet aber die Frage.

0

Angenommen, Sie können kleinere Änderungen an den Befehlen vornehmen.

Für mich ist der beste Weg, einfach Flags zu verwenden und dann reguläre Ausdrücke anzuwenden, um die volle Eingabe nach dem Flag zu erhalten.

Beispiel finde -c USA -p Jonh Doe

Alles, was Sie tun müssen, ist einen regulären Ausdruck verwenden, um die Werte von c, bis ein anderer Flagge zu extrahieren, und im Grunde das gleiche für den Namen.