ms word markierte Text finden / ersetzen, funktioniert bei dieser Mischung aus Hebräisch und Englisch im Rechts-Links-Modus nicht

657
barlop

Ich habe dieses Wortdokument

Man könnte es manuell produzieren oder von http://ge.tt/8zgZScd2 mit Firefox herunterladen (Chrome blockiert diese Site ohne triftigen Grund). Oder Sie können es hier herunterladen

ms word markierte Text finden / ersetzen, funktioniert bei dieser Mischung aus Hebräisch und Englisch im Rechts-Links-Modus nicht

Sie sehen vier hervorgehobene Zeichensätze.

Der erste ist Hebräisch, dann Englisch, von links nach rechts. (LTR-Modus)

Das zweite, dritte und vierte sind Englisch, dann Hebräisch, von rechts nach links. (RTL-Modus)

Ich verwende Strg mit Linksverschiebung, um in den LTR-Modus zu wechseln, und Strg, mit Rechtsverschiebung, um in den RTL-Modus zu wechseln.

Die hebräischen Buchstaben sind zB Unicode, was \u05D0 א aber jeder tun kann.

Hier ist das Finden und Ersetzen

ms word markierte Text finden / ersetzen, funktioniert bei dieser Mischung aus Hebräisch und Englisch im Rechts-Links-Modus nicht

Deshalb habe ich im Abschnitt "Suchen" den hervorgehobenen Text gefunden. (Diese Option ist vorhanden, wenn auf format..highlight unten links im Dialogfeld geklickt wird.)

In dem Ersetzungsabschnitt, den ich XXX^&XXX in ms word geschrieben habe, ^&heißt ms word, was die meisten nennen würden, \0dh der gefundene Text. Mein Suchen und Ersetzen sollte also hervorgehobenen Text finden und beibehalten, jedoch ein XXX vor und nach dem einfügen.

Hier ist das Ergebnis dieser Suche / Ersetzung

ms word markierte Text finden / ersetzen, funktioniert bei dieser Mischung aus Hebräisch und Englisch im Rechts-Links-Modus nicht

Wie Sie sehen können, funktionierte der erste. Das ist das mit Hebräisch, dann Englisch und LTR-Modus.

Das zweite, dritte und vierte scheiterten. Das sind die mit Englisch, dann Hebräisch im Rechts-Links-Modus.

Ich möchte, dass das Finden / Ersetzen für die letzten drei verwendet wird, dh die zweite, dritte und vierte, die mit Englisch, dann hebräisch im Rechts-Links-Modus.

hinzugefügt

Es sah ein bisschen so aus, als würde es den XXX um den Hebräer wickeln, aber es war nicht klar, warum. Aber das ist nicht das, was passiert / warum / warum es das tut.

Scott schlägt vor, eine Ersatzzeichenfolge von FOO ^ & BAR zu verwenden, um zu ermitteln, was zur Fehlerbehebung geschieht, und es wird geklärt, was passiert. Wenn Sie sich אאאabcim LTR-Modus befinden und Sie es mit FOO^&BAR ms Word ersetzen, wird dies angezeigt und es wird angezeigt, FOOאאאabcBARwas alles in Ordnung ist. Wenn Sie das in RTL-Modus setzen, macht es nicht FOOabcאאאBARoder BARabcאאאFOO. Es macht abcBARאאאFOO(dh es mischte die FOO BAR hinein). Was es tut, und ich schätze, man kann das Wort nicht schuldig machen, es sieht abcBAR als einen Brocken. Ähnlich (und klarer), wenn Sie abcאאאin RTL haben und Sie es mit ersetzen, wird es durch FOO^&BARersetztabcBARאאאFOOweil das Ende, wenn das ABC ist und das Ende des ABC, hinter dem 'C' liegt, so klebt es die BAR dort. Ich werde überlegen, was zu tun ist, aber das ist, was passiert. Vielleicht gibt es eine Art hebräisches Nullzeichen oder ein Zeichen von rechts nach links, das ich nach 'c' setzen kann, um dies zu beheben, sodass ich FOO..BAR damit umwickeln kann.

1
Sie können dieses Problem möglicherweise besser debuggen, wenn Sie eine intelligentere Ersatzzeichenfolge wie "FOO ^ & BAR" verwenden. Ich denke, dass Sie "RAB אאא FOOabcd" bekommen, aber ich weiß es nicht - es könnte "BAR אאא FOOabcd" sein. In jedem Fall tun Sie das, was Sie gefragt haben - "FOO" vor "abcd" und "BAR" nach "אאא". Zu sehen, was es tut, könnte pädagogisch sein. PS Was erwartest du? Etwas, das wie "FOO אאא abcdBAR" aussieht? Welche Zeichenfolge erhoffen Sie sich davon, dass so aussehen wird? Scott vor 7 Jahren 0
Sie sagen (unter Ihren Möglichkeiten für einen Ersatzstring von "FOO ^ & BAR"), dass es "BAR אאא FOOabcd" sein könnte. Aber ich kann nicht erkennen, wie dies bei der Fehlerbehebung hilft - wenn überhaupt, wird dies etwas komplizierter. Es macht mir nichts aus, welche Saite links und welche Saite rechts platziert wird. Und wie Sie sehen, ändert es nicht die Reihenfolge der Buchstaben, also bleibt FOO FOO, גגגג bleibt ג und BAR bleibt BAR, und ich möchte nicht, dass die Reihenfolge der Buchstaben geändert wird. barlop vor 7 Jahren 0
@Scott Sie machen einen interessanten Punkt, was die Problembehandlung angeht. Es hat geklärt, was passiert, ich habe eine Änderung hinzugefügt. barlop vor 7 Jahren 0
kann verwandt sein- barlop vor 7 Jahren 0
könnte als xml speichern und etwas herausfinden, einschließlich der Struktur und dem Verwenden eines XML-Parsers barlop vor 7 Jahren 0
Könnte vielleicht vba verwenden. Oder Könnte vielleicht als html speichern, dann sehen Sie ` hervorgehobenen Text ... (vielleicht eine verschachtelte Spanne) ... hervorgehobenen Text 'und dann die HTML in c # mit einer Art Dom-Parser lesen / ändern. barlop vor 7 Jahren 0

1 Antwort auf die Frage

0
Atzmon

Das oben beschriebene Verhalten ist vom Design her korrekt und stimmt mit der Implementierung der bidirektionalen Textunterstützung überein.

Erstens eine Lösung für Ihre Anforderung, wie ich sie verstehe.

Wenn Sie diese RTL-Beispiele mit einem Präfix und Suffix umschließen möchten und sie rechts und links von Ihrem ursprünglichen hervorgehobenen Text visuell erscheinen lassen möchten, können Sie ein RLM-Steuerzeichen nach dem Präfix platzieren, und es verhält sich wie gewünscht.

Sie können ein RLM hinzufügen, indem Sie im Dialogfeld "Suchen / Ersetzen" auf die Schaltfläche "Spezial" klicken und auswählen RTL Mark. Sie können auch einfach ^rmanuell eingeben. Ich werde die Texte verwenden PREund POST(anstelle der XXXin Ihren Beispielen):

Wenn Sie diesen "Ersetzen durch" -Text mit einem Ihrer RTL-Beispiele verwenden:

Dann erhalten Sie dieses Ergebnis, das meiner Meinung nach das Ergebnis ist, das Sie gesucht haben:

Also was passiert gerade?

In Ihren RTL-Beispielen haben Sie einen Text, der aus zwei Teilen oder zwei "Richtungsläufen" besteht. Der erste ist ein LTR-Lauf (der "abcd" -Teil) und der zweite ist ein RTL-Lauf (der hebräische "אאא" -Teil), alles innerhalb eines Absatzes, der eine RTL-Basisrichtung hat.

Wenn Sie ein LTR-Präfix (das erste "XXX" in Ihrem Ersetzungsbeispiel) zum LTR-Lauf hinzufügen, machen Sie diesen Lauf nur etwas länger, beispielsweise fügen Sie dem ersten Wort ein paar Buchstaben hinzu. Da LTR-Läufe von links nach rechts gezeichnet werden, erscheinen diese neuen Zeichen dort, wo sie sollen. Wenn Sie anstelle von "abcd" das Wort "stand" verwendet und dann das Präfix "UNDER" hinzugefügt haben, wäre das resultierende Wort "UNDERstand" (nicht "standUNDER").

Um mit solchen Situationen zurechtzukommen und einige Unklarheiten manuell zu lösen, stellt Unicode "Steuerzeichen" bereit, bei denen es sich um unsichtbare Marken handelt, die jeweils ihre eigene Rolle oder Wirkung haben.

Die Rechts-nach-Links-Markierung (RLM) verhält sich wie ein RTL-Zeichen (stellen Sie sich einen Buchstaben mit der Zeichenbreite "א" mit Nullbreite vor). Wenn wir dieses Zeichen direkt nach unserem Präfix platzieren, unterbrechen wir effektiv den oben beschriebenen LTR-Lauf mit einem hebräischen Zeichen. Jetzt wird der Text nach Bedarf visuell dargestellt, wobei das Präfix zuerst am rechten Rand erscheint, dann unser unsichtbares hebräisches Zeichen und dann das ursprüngliche "abcd".

Ich bemerke ein paar Dinge A) Wenn Sie 200E oder 200F von charmap kopieren / einfügen, fügt ms word eine neue Zeile ein, so dass es einfacher ist, mit einigen Dingen im Notizblock zu experimentieren als mit Wort. B) Meine Experimente, um dies herauszufinden, werden vereinfacht durch das Wissen, dass, wenn die Basisrichtung LTR ist, beim Schreiben einer LTR-Sprache keine Markierung einen Unterschied ausmachen kann, und wenn eine RTL-Sprache geschrieben wird, im LTR-Modus nur eine LTR-Markierung kann einen Unterschied machen. Daher ist der LTR-Marker der einzige Marker, der im LTR-Modus einen Unterschied machen kann, und gilt nur für RTL-Sprachen. barlop vor 7 Jahren 0
Im RTL-Modus ist der einzige Marker, der den Unterschied ausmacht, der LTR-Marker und das Schreiben einer RTL-Sprache. Diese Regeln und zB (diejenigen, die auf "B" folgen, vereinfachen das Experimentieren. Ich fand es auch heraus, um es herauszufinden Es hilft (im Editor), den Suchstring einzugeben, und dann im Ersetzen-Abschnitt den Ersetzungsstring einzugeben, ohne dass ein oder mehrere Zeichen eingegeben werden müssen, so dass er manuell eingegeben und die RTL- oder LTR-Markierung kopiert / eingefügt wird Sie können Strg-Rechts-Verschiebung oder Strg-Links-Verschiebung in Notepad 'Find-Replace' ausführen. Wenn das herausgefunden wurde, kann ich verstehen, was in Word vorgeht, oder zumindest in Word barlop vor 7 Jahren 0
Würdest du mit dem, was ich geschrieben habe, einverstanden sein, insbesondere, wenn die RTL- und LTR-Marker zutreffen (wirken) und nicht zutreffen (keine Wirkung haben)? barlop vor 7 Jahren 0