2 Stimmen

Parsen einer Zeichenkette auf eine bestimmte Länge (ohne Abschneiden von Wörtern)

Ich habe eine lange Zeichenfolge, die ich brauche, um in ein Array von Zeichenfolgen, die nicht mehr als 40 Zeichen in der Länge analysieren. Der knifflige Teil davon ist für mich sicherzustellen, dass die Regex das letzte Leerzeichen vor 40 Zeichen findet, um einen sauberen Bruch zwischen den Zeichenfolgen zu machen, da ich keine abgeschnittenen Wörter haben möchte.

9voto

Noldorin Punkte 138548

Diese Regex sollte die Aufgabe erfüllen:

".{1,40}( |$)"

(Anführungszeichen stehen für das String-Literal.)

Dies weist den Regex-Parser einfach an, ein beliebiges Zeichen zwischen 1 und 40 Mal (d.h. so oft wie möglich) abzugleichen, bevor er ein einzelnes Leerzeichen (oder das Ende der Zeichenkette) findet.

0voto

Greg Bacon Punkte 127209

Schneiden Sie die Teilstrings nach und nach rechts ab:

(?.{1,40})(?:\s+|$)|(?.{40})

Bei der ersten Variante wird ein sauberer Bruch angestrebt, bei der anderen kann man notfalls auch blindlings zuschlagen. Danach sind die Teilzeichenfolgen in m.Groups["sub"].Captures .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X