ENIGMA Forums
Contributing to ENIGMA => Function Peer Review => Topic started by: RetroX on September 09, 2010, 03:35:56 pm
-
I was bored, and I had these lying around. Dunno if anyone would use them for a game, but hey, whatever.
string string_trim_leading(string str)
{
for (size_t i=0;i<str.length();i++)
{
if ((str[i]=='\n' || i==0) && isspace(str[i+1]) && str[i+1]!='\n')
{
str.erase(str.begin()+(--i)+2);
}
}
return str;
}
string string_trim_trailing(string str)
{
for (size_t i=0;i<str.length();i++)
{
if ((str[i]=='\n' || i==str.length()-1) && isspace(str[i-1]) && str[i-1]!='\n')
{
str.erase(str.begin()+(--i));
}
}
return str;
}
inline string string_trim_lines(string str) { return string_trim_leading(string_trim_trailing(str)); }
string string_trim_begin(string str)
{
if (str.length()>0)
{
while (isspace(str[0]))
{
str.erase(str.begin());
if (str.length()==0)
{
break;
}
}
}
return str;
}
string string_trim_end(string str)
{
if (str.length()>0)
{
while (isspace(str[str.length()-1]))
{
str.erase(str.length()-1,1);
if (str.length()==0)
{
break;
}
}
}
return str;
}
inline string string_trim_both(string str) { return string_trim_begin(string_trim_end(str)); }
string string_trim_chars(string str, string chars)
{
for (size_t i=0;i<str.length();i++)
{
for (size_t j=0;j<chars.length();j++)
{
if (str[i]==chars[j])
{
if (i>0)
{
while (isspace(str[i-1]))
{
str.erase(str.begin()+(--i));
}
}
if (i<str.length()-1)
{
while (isspace(str[i+1]))
{
str.erase(str.begin()+i+1);
}
}
}
}
}
return str;
}
inline bool string_empty(string str) { return string_trim_both(str)==""; }
string string_trim_leading(string str) - Trims whitespace at the beginning of lines
string string_trim_trailing(string str) - Trims whitespace at the end of lines
string string_trim_lines(string str) - Trims whitespace around lines
string string_trim_begin(string str) - Trims whitespace at the beginning of a string
string string_trim_end(string str) - Trims whitespace at the end of a string
string string_trim_both(string str) - Trims whitespace on both sides of a string
string string_trim_chars(string str, string chars) - Trims whitespace around certain characters
bool string_empty(string str) - Returns true if a string consists only of whitespace
-
That's preceding. Or leading.
-
Leading sounds better. Fixed.
-
What about \t and \r\n?
-
isspace() returns true if a character is a space, \t, \r, or \n.
And it can work with other linebreaks if you convert it first.