Added URLDecode() and ReplaceAllCharOccurrences() to StringUtils.
This commit is contained in:
parent
c22ea7efff
commit
3b473f7a67
@ -658,3 +658,73 @@ AString StripColorCodes(const AString & a_Message)
|
||||
|
||||
|
||||
|
||||
|
||||
AString URLDecode(const AString & a_String)
|
||||
{
|
||||
AString res;
|
||||
size_t len = a_String.length();
|
||||
res.reserve(len);
|
||||
for (size_t i = 0; i < len; i++)
|
||||
{
|
||||
char ch = a_String[i];
|
||||
if ((ch != '%') || (i > len - 3))
|
||||
{
|
||||
res.push_back(ch);
|
||||
continue;
|
||||
}
|
||||
// Decode the hex value:
|
||||
char hi = a_String[i + 1], lo = a_String[i + 2];
|
||||
if ((hi >= '0') && (hi <= '9'))
|
||||
{
|
||||
hi = hi - '0';
|
||||
}
|
||||
else if ((hi >= 'a') && (hi <= 'f'))
|
||||
{
|
||||
hi = hi - 'a' + 10;
|
||||
}
|
||||
else if ((hi >= 'A') && (hi <= 'F'))
|
||||
{
|
||||
hi = hi - 'F' + 10;
|
||||
}
|
||||
else
|
||||
{
|
||||
res.push_back(ch);
|
||||
continue;
|
||||
}
|
||||
if ((lo >= '0') && (lo <= '9'))
|
||||
{
|
||||
lo = lo - '0';
|
||||
}
|
||||
else if ((lo >= 'a') && (lo <= 'f'))
|
||||
{
|
||||
lo = lo - 'a' + 10;
|
||||
}
|
||||
else if ((lo >= 'A') && (lo <= 'F'))
|
||||
{
|
||||
lo = lo - 'A' + 10;
|
||||
}
|
||||
else
|
||||
{
|
||||
res.push_back(ch);
|
||||
continue;
|
||||
}
|
||||
res.push_back((hi << 4) | lo);
|
||||
i += 2;
|
||||
} // for i - a_String[]
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
AString ReplaceAllCharOccurrences(const AString & a_String, char a_From, char a_To)
|
||||
{
|
||||
AString res(a_String);
|
||||
std::replace(res.begin(), res.end(), a_From, a_To);
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -72,6 +72,12 @@ extern AString EscapeString(const AString & a_Message); // tolua_export
|
||||
/// Removes all control codes used by MC for colors and styles
|
||||
extern AString StripColorCodes(const AString & a_Message); // tolua_export
|
||||
|
||||
/// URL-Decodes the given string, replacing all "%HH" into the correct characters. Invalid % sequences are left intact
|
||||
extern AString URLDecode(const AString & a_String); // Cannot export to Lua automatically - would generated an extra return value
|
||||
|
||||
/// Replaces all occurrences of char a_From inside a_String with char a_To.
|
||||
extern AString ReplaceAllCharOccurrences(const AString & a_String, char a_From, char a_To); // Needn't export to Lua, since Lua doesn't have chars anyway
|
||||
|
||||
// If you have any other string helper functions, declare them here
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user