{"id":515,"date":"2024-11-23T10:10:32","date_gmt":"2024-11-23T09:10:32","guid":{"rendered":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/?p=515"},"modified":"2024-12-06T10:18:50","modified_gmt":"2024-12-06T09:18:50","slug":"padding-von-strings-in-java-methoden-und-loesungen","status":"publish","type":"post","link":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/?p=515","title":{"rendered":"Padding von Strings in Java 8, 11 und 17"},"content":{"rendered":"\n<p>Das Padding von Strings, also das Auff\u00fcllen eines Strings mit Leerzeichen oder anderen Zeichen auf eine vorgegebene L\u00e4nge, ist ein h\u00e4ufiges Problem in der Softwareentwicklung. Es wird oft ben\u00f6tigt, um konsistente Textausgaben zu gew\u00e4hrleisten, wie beispielsweise beim Formatieren von Tabellen oder beim Erstellen von Berichten. Dieser Artikel beleuchtet verschiedene M\u00f6glichkeiten, Strings in Java zu paddieren, und stellt f\u00fcr die Java-Versionen 8, 11 und 17 die jeweils elegantesten L\u00f6sungen vor.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Was ist String Padding?<\/h2>\n\n\n\n<p>String Padding bezeichnet das Auff\u00fcllen eines Strings auf eine bestimmte Mindestl\u00e4nge, wobei der urspr\u00fcngliche Inhalt erhalten bleibt. Dies kann auf zwei Arten erfolgen:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Linksb\u00fcndiges Padding<\/strong>: Das Auff\u00fcllen erfolgt auf der rechten Seite des Strings.<\/li>\n\n\n\n<li><strong>Rechtsb\u00fcndiges Padding<\/strong>: Das Auff\u00fcllen erfolgt auf der linken Seite des Strings.<\/li>\n<\/ol>\n\n\n\n<p>Au\u00dferdem kann der Auff\u00fcllcharakter entweder ein Leerzeichen oder ein beliebiges anderes Zeichen sein.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">String Padding in Java 8<\/h2>\n\n\n\n<p>Java 8 bietet keine direkte API f\u00fcr das Padding von Strings, sodass eigene Implementierungen oder externe Bibliotheken verwendet werden m\u00fcssen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. <strong>Manuelles Padding mit Schleifen<\/strong><\/h3>\n\n\n\n<p>Die einfachste Methode besteht darin, eine Schleife zu verwenden, um das Ziel-String-Padding zu erzeugen:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">public <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-built_in\">String<\/span> padRight(<span class=\"hljs-built_in\">String<\/span> input, int length, char paddingChar) {\n    <span class=\"hljs-keyword\">if<\/span> (input.length() &gt;= length) {\n        <span class=\"hljs-keyword\">return<\/span> input;\n    }\n    StringBuilder sb = <span class=\"hljs-keyword\">new<\/span> StringBuilder(input);\n    <span class=\"hljs-keyword\">while<\/span> (sb.length() &lt; length) {\n        sb.append(paddingChar);\n    }\n    <span class=\"hljs-keyword\">return<\/span> sb.toString();\n}\n\npublic <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-built_in\">String<\/span> padLeft(<span class=\"hljs-built_in\">String<\/span> input, int length, char paddingChar) {\n    <span class=\"hljs-keyword\">if<\/span> (input.length() &gt;= length) {\n        <span class=\"hljs-keyword\">return<\/span> input;\n    }\n    StringBuilder sb = <span class=\"hljs-keyword\">new<\/span> StringBuilder();\n    <span class=\"hljs-keyword\">while<\/span> (sb.length() + input.length() &lt; length) {\n        sb.append(paddingChar);\n    }\n    sb.append(input);\n    <span class=\"hljs-keyword\">return<\/span> sb.toString();\n}\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">2. <strong>Padding mit <code>String.format<\/code><\/strong><\/h3>\n\n\n\n<p>Das <code>String.format<\/code>-API kann f\u00fcr rechtsb\u00fcndiges Padding mit Leerzeichen genutzt werden. Es ist jedoch eingeschr\u00e4nkt, da nur Leerzeichen als Padding-Charakter unterst\u00fctzt werden:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">public <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-built_in\">String<\/span> padRightWithFormat(<span class=\"hljs-built_in\">String<\/span> input, int length) {\n    <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-built_in\">String<\/span>.format(<span class=\"hljs-string\">\"%-\"<\/span> + length + <span class=\"hljs-string\">\"s\"<\/span>, input);\n}\n\npublic <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-built_in\">String<\/span> padLeftWithFormat(<span class=\"hljs-built_in\">String<\/span> input, int length) {\n    <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-built_in\">String<\/span>.format(<span class=\"hljs-string\">\"%\"<\/span> + length + <span class=\"hljs-string\">\"s\"<\/span>, input);\n}\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">3. <strong>Padding mit externen Bibliotheken<\/strong><\/h3>\n\n\n\n<p>Eine g\u00e4ngige Alternative ist die Verwendung von Apache Commons Lang (<code>StringUtils<\/code>):<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-keyword\">import<\/span> org.apache.commons.lang3.StringUtils;\n\npublic <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-built_in\">String<\/span> padRightWithCommons(<span class=\"hljs-built_in\">String<\/span> input, int length, char paddingChar) {\n    <span class=\"hljs-keyword\">return<\/span> StringUtils.rightPad(input, length, paddingChar);\n}\n\npublic <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-built_in\">String<\/span> padLeftWithCommons(<span class=\"hljs-built_in\">String<\/span> input, int length, char paddingChar) {\n    <span class=\"hljs-keyword\">return<\/span> StringUtils.leftPad(input, length, paddingChar);\n}\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Die Nutzung von Apache Commons ist besonders elegant, da sie klar lesbare Methoden mit hoher Funktionalit\u00e4t bietet.<\/p>\n\n\n\n<p><strong>Empfehlung f\u00fcr Java 8:<\/strong><br>Die Verwendung von Apache Commons Lang ist am elegantesten, da der Code einfach zu schreiben und gut wartbar ist.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">String Padding in Java 11<\/h2>\n\n\n\n<p>Mit Java 11 wurde die Methode <code>String.repeat<\/code> eingef\u00fchrt, die das Padding wesentlich vereinfacht.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. <strong>Padding mit <code>String.repeat<\/code><\/strong><\/h3>\n\n\n\n<p>Eine eigene Implementierung mit der <code>repeat<\/code>-Methode ist sehr flexibel:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">public <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-built_in\">String<\/span> padRight(<span class=\"hljs-built_in\">String<\/span> input, int length, char paddingChar) {\n    int paddingLength = <span class=\"hljs-built_in\">Math<\/span>.max(<span class=\"hljs-number\">0<\/span>, length - input.length());\n    <span class=\"hljs-keyword\">return<\/span> input + <span class=\"hljs-built_in\">String<\/span>.valueOf(paddingChar).repeat(paddingLength);\n}\n\npublic <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-built_in\">String<\/span> padLeft(<span class=\"hljs-built_in\">String<\/span> input, int length, char paddingChar) {\n    int paddingLength = <span class=\"hljs-built_in\">Math<\/span>.max(<span class=\"hljs-number\">0<\/span>, length - input.length());\n    <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-built_in\">String<\/span>.valueOf(paddingChar).repeat(paddingLength) + input;\n}\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">2. <strong>Kombination mit <code>String.format<\/code><\/strong><\/h3>\n\n\n\n<p>Die Kombination aus <code>repeat<\/code> und <code>String.format<\/code> kann f\u00fcr komplexere Szenarien genutzt werden, ist aber oft unn\u00f6tig, da <code>repeat<\/code> alleine ausreichend ist.<\/p>\n\n\n\n<p><strong>Empfehlung f\u00fcr Java 11:<\/strong><br>Die Nutzung von <code>String.repeat<\/code> ist die eleganteste L\u00f6sung, da sie direkt in der Standardbibliothek enthalten ist und keine externen Abh\u00e4ngigkeiten erfordert.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">String Padding in Java 17<\/h2>\n\n\n\n<p>Java 17 bietet keine neuen speziellen Methoden f\u00fcr Padding, jedoch kann die <code>String.repeat<\/code>-Methode aus Java 11 weiterhin genutzt werden. Au\u00dferdem k\u00f6nnen Muster (<code>Pattern<\/code>) f\u00fcr anspruchsvolle Padding-Szenarien verwendet werden.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. <strong>Padding mit <code>String.repeat<\/code><\/strong><\/h3>\n\n\n\n<p>Die Implementierung ist identisch mit Java 11 und bleibt die bevorzugte L\u00f6sung.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2. <strong>Padding mit regul\u00e4ren Ausdr\u00fccken<\/strong><\/h3>\n\n\n\n<p>F\u00fcr spezielle F\u00e4lle, in denen Padding mit bestimmten Mustern kombiniert werden muss, k\u00f6nnen regul\u00e4re Ausdr\u00fccke verwendet werden. Beispiel:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">public <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-built_in\">String<\/span> padWithPattern(<span class=\"hljs-built_in\">String<\/span> input, int length, <span class=\"hljs-built_in\">String<\/span> paddingPattern) {\n    int paddingLength = <span class=\"hljs-built_in\">Math<\/span>.max(<span class=\"hljs-number\">0<\/span>, length - input.length());\n    <span class=\"hljs-built_in\">String<\/span> padding = paddingPattern.repeat((int) <span class=\"hljs-built_in\">Math<\/span>.ceil(paddingLength \/ (double) paddingPattern.length()))\n                                    .substring(<span class=\"hljs-number\">0<\/span>, paddingLength);\n    <span class=\"hljs-keyword\">return<\/span> input + padding;\n}\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">3. <strong>Benutzerdefinierte Utility-Klassen<\/strong><\/h3>\n\n\n\n<p>Da Java 17 LTS ist und in vielen Projekten langfristig genutzt wird, ist es sinnvoll, Utility-Klassen f\u00fcr String-Operationen zu erstellen.<\/p>\n\n\n\n<p><strong>Empfehlung f\u00fcr Java 17:<\/strong><br><code>String.repeat<\/code> bleibt die eleganteste L\u00f6sung. Regul\u00e4re Ausdr\u00fccke und Utility-Klassen sind f\u00fcr spezifische Szenarien hilfreich.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Fazit<\/h2>\n\n\n\n<p>String Padding kann in Java auf verschiedene Arten umgesetzt werden. Mit neueren Java-Versionen stehen einfachere und elegantere L\u00f6sungen zur Verf\u00fcgung:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Java 8:<\/strong> Manuelles Padding mit Schleifen oder Apache Commons Lang (<code>StringUtils<\/code>).<\/li>\n\n\n\n<li><strong>Java 11:<\/strong> Nutzung der <code>String.repeat<\/code>-Methode f\u00fcr flexible und elegante L\u00f6sungen.<\/li>\n\n\n\n<li><strong>Java 17:<\/strong> Weiterhin <code>String.repeat<\/code>; f\u00fcr komplexere Szenarien k\u00f6nnen regul\u00e4re Ausdr\u00fccke oder Utility-Klassen hinzugezogen werden.<\/li>\n<\/ul>\n\n\n\n<p>Die Entwicklung von Java zeigt, wie kontinuierliche Verbesserungen die Programmierung erleichtern. F\u00fcr die meisten F\u00e4lle ist die Verwendung von <code>String.repeat<\/code> ab Java 11 der bevorzugte Ansatz. In \u00e4lteren Versionen bietet Apache Commons Lang eine gute Alternative.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Das Padding von Strings, also das Auff\u00fcllen eines Strings mit Leerzeichen oder anderen Zeichen auf eine vorgegebene L\u00e4nge, ist ein h\u00e4ufiges Problem in der Softwareentwicklung. Es wird oft ben\u00f6tigt, um konsistente Textausgaben zu gew\u00e4hrleisten, wie beispielsweise beim Formatieren von Tabellen oder beim Erstellen von Berichten. Dieser Artikel beleuchtet verschiedene M\u00f6glichkeiten, Strings in Java zu paddieren, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-515","post","type-post","status-publish","format-standard","hentry","category-plain_java"],"_links":{"self":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/515","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=515"}],"version-history":[{"count":2,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/515\/revisions"}],"predecessor-version":[{"id":517,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/515\/revisions\/517"}],"wp:attachment":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=515"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=515"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=515"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}