public class StringUtil extends Object
Constructor and Description |
---|
StringUtil() |
Modifier and Type | Method and Description |
---|---|
static String |
capitalize(String s) |
static String |
chomp(String s)
Removes the line-break from the end of the string.
|
static Locale |
deduceLocale(String input) |
static String |
emptyToNull(String s)
Converts a 0-length string to null, leaves the string as is otherwise.
|
static String |
ftlQuote(String s)
Creates a quoted FTL string literal from a string, using escaping where necessary.
|
static String |
FTLStringLiteralDec(String s)
FTL string literal decoding.
|
static String |
FTLStringLiteralEnc(String s)
Escapes a string according the FTL string literal escaping rules; it doesn't add the quotation marks.
|
static String |
FTLStringLiteralEnc(String s,
char quotation)
Escapes a string according the FTL string literal escaping rules, assuming the literal is quoted with
quotation ; it doesn't add the quotation marks itself. |
static boolean |
getYesNo(String s) |
static String |
HTMLEnc(String s)
Deprecated.
Use
XHTMLEnc(String) instead, because it escapes apostrophe-quote too. |
static boolean |
isFTLIdentifierPart(char c)
Tells if a character can occur in an FTL identifier expression (without escaping) as other than the first
character.
|
static boolean |
isFTLIdentifierStart(char c)
Tells if a character can occur on the beginning of an FTL identifier expression (without escaping).
|
static boolean |
isTrimmableToEmpty(char[] text)
Tells if
String.trim() will return a 0-length string for the String equivalent of the argument. |
static boolean |
isXMLID(String name) |
static String |
javaScriptStringEnc(String s)
Escapes a
String to be safely insertable into a JavaScript string literal; for more see
jsStringEnc(s, false) . |
static String |
javaStringEnc(String s)
Escapes the
String with the escaping rules of Java language
string literals, so it's safe to insert the value into a string literal. |
static String |
jQuote(Object obj)
|
static String |
jQuote(String s)
Quotes string as Java Language string literal.
|
static String |
jQuoteNoXSS(Object obj)
|
static String |
jQuoteNoXSS(String s)
|
static String |
jsonStringEnc(String s)
Escapes a
String to be safely insertable into a JSON string literal; for more see
jsStringEnc(s, true) . |
static String |
jsStringEnc(String s,
boolean json)
Escapes a
String to be safely insertable into a JavaScript or a JSON string literal. |
static String |
leftPad(String s,
int minLength)
Pads the string at the left with spaces until it reaches the desired
length.
|
static String |
leftPad(String s,
int minLength,
char filling)
Pads the string at the left with the specified character until it reaches
the desired length.
|
static String |
leftPad(String s,
int minLength,
String filling)
Pads the string at the left with a filling pattern until it reaches the
desired length.
|
static boolean |
matchesName(String qname,
String nodeName,
String nsURI,
Environment env) |
static Map |
parseNameValuePairList(String s,
String defaultValue)
Parses a name-value pair list, where the pairs are separated with comma,
and the name and value is separated with colon.
|
static String |
replace(String text,
String oldSub,
String newSub)
Same as
replace(String, String, String, boolean, boolean) with two false parameters. |
static String |
replace(String text,
String oldsub,
String newsub,
boolean caseInsensitive,
boolean firstOnly)
Replaces all occurrences of a sub-string in a string.
|
static String |
rightPad(String s,
int minLength)
Pads the string at the right with spaces until it reaches the desired
length.
|
static String |
rightPad(String s,
int minLength,
char filling)
Pads the string at the right with the specified character until it
reaches the desired length.
|
static String |
rightPad(String s,
int minLength,
String filling)
Pads the string at the right with a filling pattern until it reaches the
desired length.
|
static String |
RTFEnc(String s)
Rich Text Format encoding (does not replace line breaks).
|
static String[] |
split(String s,
char c)
Splits a string at the specified character.
|
static String[] |
split(String s,
String sep,
boolean caseInsensitive)
Splits a string at the specified string.
|
static String |
toLowerABC(int n)
Same as
toUpperABC(int) , but produces lower case result, like "ab" . |
static String |
toUpperABC(int n)
Converts
1 , 2 , 3 and so forth to "A" , "B" , "C" and so fort. |
static char[] |
trim(char[] cs)
Behaves exactly like
String.trim() , but works on arrays. |
static String |
tryToString(Object object)
Tries to run
toString() , but if that fails, returns a
"[com.example.SomeClass.toString() failed: " + e + "]" instead. |
static String |
URLEnc(String s,
String charset)
URL encoding (like%20this) for query parameter values, path segments, fragments; this encodes all
characters that are reserved anywhere.
|
static String |
URLPathEnc(String s,
String charset)
Like
URLEnc(String, String) but doesn't escape the slash character (/ ). |
static int |
versionStringToInt(String version)
Converts a version number string to an integer for easy comparison.
|
static String |
XHTMLEnc(String s)
XHTML Encoding.
|
static String |
XMLEnc(String s)
XML Encoding.
|
static String |
XMLEncNA(String s)
XML encoding without replacing apostrophes.
|
static String |
XMLEncNQG(String s)
XML encoding without replacing apostrophes and quotation marks and
greater-thans (except in
]]> ). |
static String |
XMLEncQAttr(String s)
XML encoding for attributes values quoted with " (not with '!).
|
public static String HTMLEnc(String s)
XHTMLEnc(String)
instead, because it escapes apostrophe-quote too.public static String XMLEnc(String s)
public static String XHTMLEnc(String s)
public static String XMLEncNA(String s)
XMLEnc(String)
public static String XMLEncQAttr(String s)
XMLEnc(String)
public static String XMLEncNQG(String s)
]]>
).XMLEnc(String)
public static String RTFEnc(String s)
public static String URLEnc(String s, String charset) throws UnsupportedEncodingException
UnsupportedEncodingException
public static String URLPathEnc(String s, String charset) throws UnsupportedEncodingException
URLEnc(String, String)
but doesn't escape the slash character (/
).
This can be used to encode a path only if you know that no folder or file name will contain /
character (not in the path, but in the name itself), which usually stands, as the commonly used OS-es don't
allow that.UnsupportedEncodingException
public static String FTLStringLiteralEnc(String s, char quotation)
quotation
; it doesn't add the quotation marks itself.quotation
- Either '"'
or '\''
. It's assumed that the string literal whose part we calculate is
enclosed within this kind of quotation mark. Thus, the other kind of quotation character will not be
escaped in the result.public static String FTLStringLiteralEnc(String s)
FTLStringLiteralEnc(String, char)
public static String FTLStringLiteralDec(String s) throws ParseException
s
- String literal without the surrounding quotation marksParseException
- if there string contains illegal escapespublic static boolean getYesNo(String s)
public static String[] split(String s, String sep, boolean caseInsensitive)
public static String replace(String text, String oldSub, String newSub)
replace(String, String, String, boolean, boolean)
with two false
parameters.public static String replace(String text, String oldsub, String newsub, boolean caseInsensitive, boolean firstOnly)
text
- The string where it will replace oldsub
with
newsub
.public static String emptyToNull(String s)
s
- maybe null
.public static String jQuote(String s)
"null"
if s
is null
.public static String jQuoteNoXSS(String s)
jQuoteNoXSS(String)
but also escapes '<'
as \
u003C
. This is used for log messages to prevent XSS
on poorly written Web-based log viewers.public static String ftlQuote(String s)
s
- The value that should be converted to an FTL string literal whose evaluated value equals to s
public static boolean isFTLIdentifierStart(char c)
public static boolean isFTLIdentifierPart(char c)
public static String javaStringEnc(String s)
String
with the escaping rules of Java language
string literals, so it's safe to insert the value into a string literal.
The resulting string will not be quoted.
All characters under UCS code point 0x20 will be escaped. Where they have no dedicated escape sequence in Java, they will be replaced with hexadecimal escape (\uXXXX).
jQuote(String)
public static String javaScriptStringEnc(String s)
String
to be safely insertable into a JavaScript string literal; for more see
jsStringEnc(s, false)
.public static String jsonStringEnc(String s)
String
to be safely insertable into a JSON string literal; for more see
jsStringEnc(s, true)
.public static String jsStringEnc(String s, boolean json)
String
to be safely insertable into a JavaScript or a JSON string literal.
The resulting string will not be quoted; the caller must ensure that they are there in the final
output. Note that for JSON, the quotation marks must be "
, not '
, because JSON doesn't escape
'
.
The escaping rules guarantee that if the inside
of the literal is from one or more touching sections of strings escaped with this, no character sequence will
occur that closes the string literal or has special meaning in HTML/XML that can terminate the script section.
(If, however, the escaped section is preceded by or followed by strings from other sources, this can't be
guaranteed in some rare cases. Like x = "</${a?js_string}" might closes the "script"
element if a
is is "script>"
.)
The escaped characters are:
Input | Output |
---|---|
" | \" |
' if not in JSON-mode | \' |
\ | \\ |
/ if the method can't know that it won't be directly after < | \/ |
> if the method can't know that it won't be directly after ]] or -- | JavaScript: \>; JSON: \u003E |
< if the method can't know that it won't be directly followed by ! or ? | \u003C |
u0000-u001f (UNICODE control characters - disallowed by JSON) u007f-u009f (UNICODE control characters - disallowed by JSON) | \n, \r and such, or if there's no such dedicated escape: JavaScript: \xXX, JSON: \uXXXX |
u2028 (Line separator - source code line-break in ECMAScript) u2029 (Paragraph separator - source code line-break in ECMAScript) | \uXXXX |
public static Map parseNameValuePairList(String s, String defaultValue) throws ParseException
defaultValue
is not null. When a
value is omitted, then the colon after the key must be omitted as well.
The same key can't be used for multiple times.s
- the string to parse.
For example: "strong:100, soft:900"
.defaultValue
- the value used when the value is omitted in a
key-value pair.ParseException
- if the string is not a valid name-value
pair list.public static boolean isXMLID(String name)
public static boolean matchesName(String qname, String nodeName, String nsURI, Environment env)
public static String leftPad(String s, int minLength)
s
- the string that will be padded.minLength
- the length to reach.public static String leftPad(String s, int minLength, char filling)
s
- the string that will be padded.minLength
- the length to reach.filling
- the filling pattern.public static String leftPad(String s, int minLength, String filling)
leftPad('ABC', 9, '1234')
returns "123412ABC"
.s
- the string that will be padded.minLength
- the length to reach.filling
- the filling pattern. Must be at least 1 characters long.
Can't be null
.public static String rightPad(String s, int minLength)
s
- the string that will be padded.minLength
- the length to reach.public static String rightPad(String s, int minLength, char filling)
s
- the string that will be padded.minLength
- the length to reach.filling
- the filling pattern.public static String rightPad(String s, int minLength, String filling)
rightPad('ABC', 9, '1234')
returns "ABC412341"
. Note that the filling pattern is
started as if you overlay "123412341"
with the left-aligned
"ABC"
, so it starts with "4"
.s
- the string that will be padded.minLength
- the length to reach.filling
- the filling pattern. Must be at least 1 characters long.
Can't be null
.public static int versionStringToInt(String version)
public static String tryToString(Object object)
toString()
, but if that fails, returns a
"[com.example.SomeClass.toString() failed: " + e + "]"
instead. Also, it returns null
for
null
parameter.public static String toUpperABC(int n)
1
, 2
, 3
and so forth to "A"
, "B"
, "C"
and so fort. When
reaching "Z"
, it continues like "AA"
, "AB"
, etc. The lowest supported number is 1, but
there's no upper limit.IllegalArgumentException
- If the argument is 0 or less.public static String toLowerABC(int n)
toUpperABC(int)
, but produces lower case result, like "ab"
.public static char[] trim(char[] cs)
String.trim()
, but works on arrays. If the resulting array would have the same
content after trimming, it returns the original array instance. Otherwise it returns a new array instance (or
CollectionUtils.EMPTY_CHAR_ARRAY
).public static boolean isTrimmableToEmpty(char[] text)
String.trim()
will return a 0-length string for the String
equivalent of the argument.