freemarker.template.utility

Class StringUtil


public class StringUtil
extends java.lang.Object

Some text related utilities.
Version:
$Id: StringUtil.java,v 1.48 2005/06/01 22:39:08 ddekany Exp $

Method Summary

static String
FTLStringLiteralDec(String s)
FTL string literal decoding.
static String
FTLStringLiteralEnc(String s)
static String
HTMLEnc(String s)
HTML encoding (does not convert line breaks).
static String
RTFEnc(String s)
Rich Text Format encoding (does not replace line breaks).
static String
URLEnc(String s, String charset)
URL encoding (like%20this).
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-than signs.
static String
XMLEncQAttr(String s)
XML encoding for attributes valies quoted with " (not with '!).
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 boolean
getYesNo(String s)
static boolean
isXMLID(String name)
static String
jQuote(String s)
Quotes string as Java Language string literal.
static String
javaScriptStringEnc(String s)
Escapes a String according the JavaScript string literal escaping rules.
static String
javaStringEnc(String s)
Escapes the String with the escaping rules of Java language string literals, so it is safe to insert the value into a 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, String filling)
Pads the string at the left with a filling pattern 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 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, 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, String filling)
Pads the string at the right with a filling pattern 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[]
split(String s, String sep, boolean caseInsensitive)
Splits a string at the specified string.
static String[]
split(String s, char c)
Splits a string at the specified character.

Method Details

FTLStringLiteralDec

public static String FTLStringLiteralDec(String s)
            throws ParseException
FTL string literal decoding. \\, \", \', \n, \t, \r, \b and \f will be replaced according to Java rules. In additional, it knows \g, \l, \a and \{ which are replaced with <, >, & and { respectively. \x works as hexadecimal character code escape. The character codes are interpreted according to UCS basic plane (Unicode). "f\x006Fo", "f\x06Fo" and "f\x6Fo" will be "foo". "f\x006F123" will be "foo123" as the maximum number of digits is 4. All other \X (where X is any character not mentioned above or End-of-string) will cause a ParseException.
Parameters:
s - String literal without the surrounding quotation marks
Returns:
String with all escape sequences resolved
Throws:
ParseException - if there string contains illegal escapes

FTLStringLiteralEnc

public static String FTLStringLiteralEnc(String s)

HTMLEnc

public static String HTMLEnc(String s)
HTML encoding (does not convert line breaks). Replaces all '>' '<' '&' and '"' with entity reference

RTFEnc

public static String RTFEnc(String s)
Rich Text Format encoding (does not replace line breaks). Escapes all '\' '{' '}' and '"'

URLEnc

public static String URLEnc(String s,
                            String charset)
            throws UnsupportedEncodingException
URL encoding (like%20this).

XMLEnc

public static String XMLEnc(String s)
XML Encoding. Replaces all '>' '<' '&', "'" and '"' with entity reference

XMLEncNA

public static String XMLEncNA(String s)
XML encoding without replacing apostrophes.

XMLEncNQG

public static String XMLEncNQG(String s)
XML encoding without replacing apostrophes and quotation marks and greater-than signs.

XMLEncQAttr

public static String XMLEncQAttr(String s)
XML encoding for attributes valies quoted with " (not with '!). Also can be used for HTML attributes that are quoted with ".

capitalize

public static String capitalize(String s)

chomp

public static String chomp(String s)
Removes the line-break from the end of the string.

deduceLocale

public static Locale deduceLocale(String input)

getYesNo

public static boolean getYesNo(String s)

isXMLID

public static boolean isXMLID(String name)
Returns:
whether the name is a valid XML tagname. (This routine might only be 99% accurate. Should maybe REVISIT)

jQuote

public static String jQuote(String s)
Quotes string as Java Language string literal. Returns string "null" if s is null.

javaScriptStringEnc

public static String javaScriptStringEnc(String s)
Escapes a String according the JavaScript string literal escaping rules. The resulting string will not be quoted.

It escapes both ' and ". In additional it escapes > as \> (to avoid </script>). Furthermore, all characters under UCS code point 0x20, that has no dedicated escape sequence in JavaScript language, will be replaced with hexadecimal escape (\xXX).


javaStringEnc

public static String javaStringEnc(String s)
Escapes the String with the escaping rules of Java language string literals, so it is safe to insert the value into a string literal. The resulting string will not be quoted.

In additional, all characters under UCS code point 0x20, that has no dedicated escape sequence in Java language, will be replaced with UNICODE escape (\<!-- -->uXXXX).


leftPad

public static String leftPad(String s,
                             int minLength)
Pads the string at the left with spaces until it reaches the desired length. If the string is longer than this length, then it returns the unchanged string.
Parameters:
s - the string that will be padded.
minLength - the length to reach.

leftPad

public 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. If the string is longer than this length, then it returns the unchanged string. For example: leftPad('ABC', 9, '1234') returns "123412ABC".
Parameters:
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.

leftPad

public 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. If the string is longer than this length, then it returns the unchanged string.
Parameters:
s - the string that will be padded.
minLength - the length to reach.
filling - the filling pattern.

matchesName

public static boolean matchesName(String qname,
                                  String nodeName,
                                  String nsURI,
                                  Environment env)
Returns:
whether the qname matches the combination of nodeName, nsURI, and environment prefix settings.

parseNameValuePairList

public static Map parseNameValuePairList(String s,
                                         String defaultValue)
            throws java.text.ParseException
Parses a name-value pair list, where the pairs are separated with comma, and the name and value is separated with colon. The keys and values can contain only letters, digits and _. They can't be quoted. White-space around the keys and values are ignored. The value can be omitted if 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.
Parameters:
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.
Returns:
the map that contains the name-value pairs.

replace

public static String replace(String text,
                             String oldsub,
                             String newsub,
                             boolean caseInsensitive,
                             boolean firstOnly)
Replaces all occurrences of a sub-string in a string.
Parameters:
text - The string where it will replace oldsub with newsub.
Returns:
String The string after the replacements.

rightPad

public static String rightPad(String s,
                              int minLength)
Pads the string at the right with spaces until it reaches the desired length. If the string is longer than this length, then it returns the unchanged string.
Parameters:
s - the string that will be padded.
minLength - the length to reach.

rightPad

public 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. If the string is longer than this length, then it returns the unchanged string. For example: 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".
Parameters:
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.

rightPad

public 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. If the string is longer than this length, then it returns the unchanged string.
Parameters:
s - the string that will be padded.
minLength - the length to reach.
filling - the filling pattern.

split

public static String[] split(String s,
                             String sep,
                             boolean caseInsensitive)
Splits a string at the specified string.

split

public static String[] split(String s,
                             char c)
Splits a string at the specified character.