Der String hat sowohl PadLeft
als auch PadRight
. Ich brauche links und rechts aufzufüllen (Mittenausrichtung). Gibt es einen standardisierten Weg dies zu tun, oder besser noch, ein eingebautes Mittel, um das gleiche Ziel zu erreichen?Pad links und Pad rechts (Pad Center) String
Antwort
Nicht, dass ich weiß. Sie können eine Erweiterungsmethode erstellen, wenn Sie sich selbst häufig verwenden. Angenommen, Sie möchten, dass Ihre Schnur in der Mitte, am Ende, verwenden Sie so etwas wie die folgenden
public string PadBoth(string source, int length)
{
int spaces = length - source.Length;
int padLeft = spaces/2 + source.Length;
return source.PadLeft(padLeft).PadRight(length);
}
Um dieses eine Erweiterungsmethode zu machen, tun Sie es wie folgt:
namespace System
{
public static class StringExtensions
{
public static string PadBoth(this string str, int length)
{
int spaces = length - str.Length;
int padLeft = spaces/2 + str.Length;
return str.PadLeft(padLeft).PadRight(length);
}
}
}
Als beiseite, ich nur schließen meine Erweiterungen im Systemnamespace - es liegt an Ihnen, was Sie tun.
Modifizierte die letzte Zeile, um nicht-brechende Leerzeichen zu verwenden (alt + 0160), '.PadRight (Länge, '');' . Dies hilft, das Padding auch dann zu zeigen, wenn die Anzeigeumgebung mehrere Leerzeichen nicht mag. – ShawnFeatherly
Sie können auch Ihre Erweiterung wie folgt erstellen:
public static string PadBoth(this string s, int padValue)
{
return s.PadLeft(padValue).PadRight(padValue);
}
und PadBoth Methode auf Zeichenfolge verwenden.
Versuchen Sie, dies auszuführen, ich habe das Gefühl, es wird das gleiche tun wie Pad in Ruhe gelassen ... –
Sie könnten es tun, um sich mit diesem:
string test = "Wibble";
int padTo = 12;
int padSize = (padTo - test.Length)/2;
if (padSize > 0) {
test = test.Trim().PadLeft(test.Length + padSize).PadRight(test.Length + 2 * padSize);
}
Nur soviel justieren mit ungeraden Polsterung Längen befassen, wie erforderlich und es eine Erweiterungsmethode machen, wenn das Ihr Leben einfacher macht.
Hier ist eine benutzerdefinierte Implementierung, die keine Neubildung von Zeichenfolgen erfordert.
Auch funktioniert es einwandfrei mit ungeraden Zahlen
static string PadCenter(string text, int newWidth)
{
const char filler = ' ';
int length = text.Length;
int charactersToPad = newWidth - length;
if (charactersToPad < 0) throw new ArgumentException("New width must be greater than string length.", "newWidth");
int padLeft = charactersToPad/2 + charactersToPad%2;
//add a space to the left if the string is an odd number
int padRight = charactersToPad/2;
StringBuilder resultBuilder = new StringBuilder(newWidth);
for (int i = 0; i < padLeft; i++) resultBuilder.Insert(i, filler);
for (int i = 0; i < length; i++) resultBuilder.Insert(i + padLeft, text[i]);
for (int i = newWidth - padRight; i < newWidth; i++) resultBuilder.Insert(i, filler);
return resultBuilder.ToString();
}
Hier ist eine leicht verbesserte Version von @ david-Colwell der extension Methode, die gegebenenfalls auch ein Füllzeichen nimmt:
namespace System
{
public static class StringExtensions
{
public static string PadSides(this string str, int totalWidth, char paddingChar = ' ')
{
int padding = totalWidth - str.Length;
int padLeft = padding/2 + str.Length;
return str.PadLeft(padLeft, paddingChar).PadRight(totalWidth, paddingChar);
}
}
}
/* Output looks like this
*****Luke*****
*****Leia*****
*****Han******
**Chewbecca*** */
string result = "";
string names = "Luke,Leia,Han,Chewbecca";
string[] charA = names.Split(',');
for (int i = 0; i < charA.Length; i++)
{
int padLeft = (14 - charA[i].Length)/2;
string temp = charA[i].PadLeft(charA[i].Length + padLeft, '*');
result += temp.PadRight(14, '*') + "\n";
}
Console.WriteLine(result);
Die Kraft ist in diesem nicht so stark ;-) – Blaatz0r
hier ein etwas von einer Verbesserung, denke ich.
namespace System
{
public static class StringExtensions
{
public static string PadCenter(this string str, int totalLength, char padChar = '\u00A0')
{
int padAmount = totalLength - str.Length;
if (padAmount <= 1)
{
if (padAmount == 1)
{
return str.PadRight(totalLength);
}
return str;
}
int padLeft = padAmount/2 + str.Length;
return str.PadLeft(padLeft).PadRight(totalLength);
}
}
}
- 1. Pad rechts mehrzeiligen String
- 2. C# Pad links nach String
- 3. Entschlüsselungsfehler: Pad Block beschädigt
- 4. D-Pad und Joystick haben dieselbe Ereignisquellen-ID. will zwischen d-pad und joystick unterscheiden
- 5. Recyclerview und D-Pad Navigation
- 6. Two Time Pad Attack
- 7. Pad python schwimmt
- 8. Xamarin Forms Unterschrift Pad
- 9. Zero pad numpy array
- 10. Ungültige Option Dateioptionen: pad = oper
- 11. Left-Pad printf mit Leerzeichen
- 12. Dekorieren Hex Funktion Pad Nullen
- 13. Pad-Array mit Nullen- openCV
- 14. Touch Pad Writer in iPhone
- 15. Pad zwischen Label und Eingabe (Typ = 'Text')?
- 16. Convert und Pad eine Liste numpy Array
- 17. Wie kann ich die Zeichenfolgendarstellung eines Floats links-pad?
- 18. Jquery onBlur Pad Nullen von links in eine Zahl
- 19. Wie pad mit n Zeichen in Python
- 20. Pad links oder rechts mit string.format (nicht padleft oder padright) mit beliebiger Zeichenfolge
- 21. Xamarin bildet Unterschrift Pad Get Bild
- 22. bash 0 Pad-Nummern auf Substrings
- 23. Zero-Pad Ziffern in der Zeichenfolge
- 24. Pad Reihen in BizTalk Flat File-Schema
- 25. Einige eingebaute pad eine Liste in Python
- 26. Pad mit führenden Nullen auf gemeinsame Breite
- 27. Verschlüsselung-Entschlüsselung-Fehler (eine Zeit-Pad-Verschlüsselung)
- 28. Right Align/Pad-Nummern in bash
- 29. Matplotlib Pad weißen Raum in der Figur
- 30. EXCEL VBA Formula - Pad eine Zelle
'Yourstring.PadLeft(). PadRight()'? –