Surround Hebräisch und Englisch Text in Div

8

Ich versuche, einen Span-Tag um hebräischen und englischen Satz in einem Absatz hinzuzufügen. Z.B.  "Also, was ist alles los?" wird werden:

%Vor%

Ich habe versucht mit regexp, aber es ist nur die hebräischen Wörter entfernen und die englischen Wörter in einem Span verbinden.

%Vor%     
roude 03.07.2015, 08:36
quelle

3 Antworten

9

Vorangegangene Antworten berücksichtigten nicht die Anforderung ganzes Wort . In der Tat ist es schwierig, dies zu erreichen, da \b word boundary keine Wortgrenzen mit benachbarten hebräischen Unicode-Symbolen unterstützt, die wir nur mit einer Zeichenklasse unter Verwendung von \u notation abgleichen können.

Ich empfehle die Verwendung von Look-Aways und das Erfassen von Gruppen, um sicherzustellen, dass wir das ganze hebräische Wort ( (^|[^\u0590-\u05FF])([\u0590-\u05FF]+)(?![\u0590-\u05FF]) , das sicherstellt, dass ein nicht-hebräisches Symbol oder Anfang der Zeichenkette vor einem hebräischen Wort ist) ein \s if hinzufügen Es gibt Leerzeichen zwischen den hebräischen Wörtern!) und \b[a-z\s]+\b , um die Abfolge der ganzen englischen Wörter, die durch Leerzeichen getrennt sind, zu finden.

Wenn Sie die <span> -Tags in einen Satz um ganze Wörter einfügen möchten, ist hier eine Funktion hilfreich:

%Vor% %Vor% %Vor%

Ergebnis:

%Vor%

Wenn Sie in Ihrer Ausgabe keine Interpunktionszeichen oder alphanumerischen Elemente benötigen, verknüpfen Sie nur ganze englische und hebräische Wörter und verwenden Sie dann

%Vor% %Vor% %Vor%

Ergebnis:

%Vor%     
Wiktor Stribiżew 03.07.2015 09:33
quelle
1

Ich denke, die Regex, die Sie wollen, ist etwas wie [^a-z^\u0591-\u05F4^\s] . Ich bin mir nicht ganz sicher, wie Sie mit Leerzeichen umgehen wollen.

Meine Lösung

Kopiere str in eine neue Variable res und ersetze alle Zeichen, die nicht A-Z / Hebräisch sind.
Schleife über alle englischen (a-z) Zeichen in str und wickle sie in ein span mit res.replace .
Wiederholen Sie das gleiche für die hebräischen Zeichen.

Es ist nicht ganz 100%, aber scheint gut genug zu funktionieren IMO.

%Vor%

Ссылка

    
Dave Salomon 03.07.2015 09:33
quelle
0

Nach diesem Post können Sie Folgendes ausprobieren: ((?:\s*\w+)+|(?:\s*[\u0590-\u05FF]+)+?(?=\s?[A-Za-z0-9!?.])) Ссылка

Sie müssen es möglicherweise für Ihre speziellen Fälle bearbeiten (zum Beispiel, wenn einige Nicht-Wort-Zeichen erscheinen), aber es funktioniert. Es versucht Wörter und Sätze aus der englischen Zeichenliste zu bilden, wenn es nicht funktioniert, versucht es Wörter / Sätze aus der Liste der hebräischen Zeichen zu machen, bis ein englisches Zeichen wieder gefunden wird.

Es ist noch nicht perfekt, da Sie vielleicht andere Interpunktionszeichen hinzufügen möchten und es einige Leerzeichen gibt, die Sie nicht in der ersten Position haben möchten (da Javascript keine Lookbehinds unterstützt, habe ich keine gute Möglichkeit gefunden, diese zu entfernen sie auf der Stelle, aber sie können an Position 1 sein und von der Schnur entfernt werden)

    
Andris Leduskrasts 03.07.2015 09:10
quelle

Tags und Links