Thread Regex für SMS in Javascript
(6 answers)
Opened by Gustl at 2019-10-12 19:54
Ansatz ohne Regex (auf Perl aufbauend; wie das in JavaScript machbar ist, weiß ich derzeit nicht):
1. Text an Leerzeichen aufsplitten in Fragmente; wenn Du die Leerzeichen behalten willst, fange sie beim Splitten ein 2. Variable für neue SMS vorbereiten 3. Stück für Stück durch die Fragmente wandern. Wenn die Länge von neuer SMS + aktuelles Fragment kleiner als 160 Zeichen ist, neue SMS um Fragment erweitern. Wenn länger, neue SMS speichern oder senden, Variable neu setzen auf den Wert des Fragments. Schnell gehackter Perl-Code (Optimierungen sicherlich noch möglich): Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 #! /usr/bin/perl use strict; use warnings; use 5.020; my $text = do { local $/; <DATA> }; my @parts = split m/(\s+)/, $text; my @sms_to_send; my $new_sms = ""; while ( my $p = shift @parts ) { # add part if length is valid if ( length($new_sms) + length($p) < 160 ) { $new_sms .= $p; } else { # store message and reset $new_sms push @sms_to_send, $new_sms; # prevent starting with whitespaces $new_sms = $p =~ m/^\s+$/ ? "" : $p; } } push @sms_to_send, $new_sms if $new_sms; say ">$_<" for @sms_to_send; __DATA__ Dies ist ein SMS Text mit Umbruch und anderen Dingen. Vielleicht ist er sogar zu lang, um in eine einzelne SMS mit 160 Zeichen zu passen. Wenn sie noch viel laenger wird, kann es passieren, dass sie aufgesplittet wird in mehrere Nachrichten. edit: Aufzählung korrigiert Last edited: 2019-10-12 21:38:56 +0200 (CEST) meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen! |