seth_not@home: Zeilen auffüllen mit Regex

Beitrag lesen

gudn tach!

Dass ich keine Programmiersprache genannt habe, liegt daran, dass die Ersetzung unabhängig von der Programmiersprache gemacht werden soll. (auch wenn die Regex-Implementierung teilweise selbst abhängig von der Sprache sind, aber naja)

da in allen sprachen, die regexp koennen, vermutlich auch for-schleifen existieren und die laenge eines strings oder ein teilstring leicht eruiert werden kann, sollte ebenfalls halbwegs sprachenunabhaengig (hier jetzt in perl-syntax), aber halt nicht mehr regexp-only das gehen, was Matthias vorschlug:

je nach vorgabe, ob in-place:

  
$numPadChar = 10 - length $str;  
$str .= '#' for 1..$numPadChar;  

oder (ueber substrings)

  
$str .= substr($str.'##########', 0, 10);  

oder nicht-in-place:

  
$new_str = $str;  
$new_str .= '#' for 1..(10 - length $str);  

(speziell in perl wuerde ich es das problem noch mal anders loesen:

  
$str .= '#' x (10 - length $str);  

~~~)  
  

> MudGuard hat ja schon eine Lösung genannt. Die ist so einfach, ich wundere mich, dass ich nicht selbst darauf gekommen bin.  
  
vermutlich, weil du es in \_einem\_ ausdruck loesen wolltest.  
  

> Was ich mich jetzt nur noch frage ist, ob das vielleicht auch mit einem einzigen Regex gesteht statt 2 Stück hintereinander.  
  
ich vermute, dass das nur gemogelt geht, z.b. so:  
~~~perl
  
s/^(.*)\K$/'#' x (10 - length $1)/e;  

oder wie oben per substrings:

  
s/^(.*)\K$/substring('###########', 0, 10 - length $1)/e;  

prost
seth