I'm wondering if there's a more OO way of creating spaces in C#.
Literally Space Code!
I currently have tabs += new String(" ");
and I can't help but feel that this is somewhat reminiscent of using ""
instead of String.Empty
.
What can I use to create spaces that isn't " "
?
Space, tab, line feed (newline), carriage return, form feed, and vertical tab characters are called "white-space characters" because they serve the same purpose as the spaces between words and lines on a printed page — they make reading easier.
isspace() in C/C++ and its application to count whitespace characters.
With many keyboard layouts, a whitespace character may be entered by pressing spacebar . Horizontal whitespace may also be entered on many keyboards with the Tab ↹ key, although the length of the space may vary.
The replaceAll() method of the String class replaces each substring of this string that matches the given regular expression with the given replacement. You can remove white spaces from a string by replacing " " with "".
You can write
" "
instead of
new String(' ')
Does that help?
Depending on what you do, you might want to look into the StringBuilder.Append overload that accepts a character and a 'repeat' count:
var tabs = new StringBuilder(); tabs.Append(' ', 8);
or into the string
constructor that constructs a string from a character a 'repeat' count:
var tabs = new string(' ', 8);
Here's an enterprisey OO solution to satisfy all your space generation needs:
public abstract class SpaceFactory { public static readonly SpaceFactory Space = new SpaceFactoryImpl(); public static readonly SpaceFactory ZeroWidth = new ZeroWidthFactoryImpl(); protected SpaceFactory { } public abstract char GetSpace(); public virtual string GetSpaces(int count) { return new string(this.GetSpace(), count); } private class SpaceFactoryImpl : SpaceFactory { public override char GetSpace() { return '\u0020'; } } private class ZeroWidthFactoryImpl : SpaceFactory { public override char GetSpace() { return '\u200B'; } } }
Now that you've clarified in comments:
In my actual code I'm doing new String(' ',numberOfSpaces) so I probably need to still use the new String part.
... the other answers so far are effectively useless :(
You could write:
const char Space = ' ';
then use
new string(Space, numberOfSpaces)
but I don't see any benefit of that over
new string(' ', numberOfSpaces)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With