Splitten eines string mit mehreren Leerzeichen mit perl?
Ich versuche, split einen string mit mehreren Leerzeichen. Ich will nur an split, wo es 2 oder mehr Leerzeichen. Ich habe versucht mehrere Dinge und ich erhalte die gleiche Ausgabe, die ist, teilt es sich nach jedem Buchstaben. Hier ist das Letzte, was ich versucht
@cellMessage = split(s/ {2,}//g, $message);
foreach(@cellMessage){
print "$_ \n";
}
Tag diese Frage mit der Sprache, die Sie verwenden und du bekommst mehr Antworten.
sieht aus wie perl zu mir. 😉
Ja ... ich weiß nicht, Perl, aber das sieht aus wie Perl zu mir. Wahrscheinlich ein Tippfehler, dann. ;P
Es ist angedeutet worden, aber niemand hat das Recht geschrieben, dass es sich für Sie noch:
sieht aus wie perl zu mir. 😉
Ja ... ich weiß nicht, Perl, aber das sieht aus wie Perl zu mir. Wahrscheinlich ein Tippfehler, dann. ;P
Es ist angedeutet worden, aber niemand hat das Recht geschrieben, dass es sich für Sie noch:
s/ {2,}//g
ist eine substitution Betrieb auf die Standard-variable $_
, und nicht die Ausbeute eines regex für split
zu verwenden. Alle es gibt eine Zahl bedeutet, wie viele Ersetzungen stattgefunden, auf was auch immer in $_
. Finden Sie hier für, wie das Unternehmen arbeitet: perldoc.perl.org/perlrequick.html#Search-and-replaceInformationsquelleAutor shinjuo | 2010-07-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Eine weitere kleine Raffinesse wäre die Verwendung von + statt {2,}. Das + bedeutet genau, dass, "mindestens eine": - split(/\s+/, $Nachricht);
A. er sagte, er Wolle aufteilen auf 2 oder mehr Räume. Das wäre
/\s\s+/
, die nur 1 Zeichen weniger als/\s{2,}/
. Sie beide das gleiche meinen.InformationsquelleAutor Erik
Halten die syntax, die Sie verwendet in Ihrem Beispiel würde ich dieses empfehlen:
weil Sie passen auf alle whitespace-Zeichen (Tabulatoren, Leerzeichen, etc...). Das problem mit deinen original-code war, dass die
split
Anleitung ist auf der Suche nach einem Muster und die regex, die Sie zur Verfügung gestellt wurde, was in der leere string//
, teilt$message
in einzelne Zeichen.InformationsquelleAutor dls
InformationsquelleAutor toolic
Können Sie konkret tun:
@cellMessage = split(/\s+/, $Nachricht);
Tut es das gleiche wie " @cellMessage = split(/{2,}/, $Nachricht);" sieht aber ein wenig sauberer zu mir imo.
InformationsquelleAutor user2506092
Versuchen, diese:
\b(\s{2,})\b
Das sollte für Sie nichts mit mehreren Leerzeichen zwischen Wort boundries.
InformationsquelleAutor AllenG