org.archiviststoolkit.util
Class StringHelper

java.lang.Object
  extended by org.archiviststoolkit.util.StringHelper

public class StringHelper
extends java.lang.Object

Utilities for String formatting, manipulation, and queries. More information about this class is available from ostermiller.org.

20Nov03 Fixed bug in replace method. length = stringLength + (count * (replaceLength - findLength));


Constructor Summary
StringHelper()
           
 
Method Summary
static java.lang.String cleanUpWhiteSpace(java.lang.String stringToStrip)
           
static java.lang.String concat(java.util.ArrayList array, java.lang.String seperator)
           
static java.lang.String concat(java.lang.String seperator, java.lang.String... strings)
           
static java.lang.String concatenateAllFields(java.lang.String delimiter, java.lang.String... fields)
           
static java.lang.String concatenateFields(java.lang.String delimiter, java.lang.String... fields)
           
static java.lang.String convertPipeToCarriageReturn(java.lang.String toConvert)
           
static java.lang.String convertToNmtoken(java.lang.String string)
           
static java.lang.String escapeHTML(java.lang.String s)
          Replaces characters that may be confused by a HTML parser with their equivalent character entity references.
static java.lang.String escapeJavaLiteral(java.lang.String s)
          Replaces characters that are not allowed in a Java style string literal with their escape characters.
static java.lang.String escapeSQL(java.lang.String s)
          Replaces characters that may be confused by an SQL parser with their equivalent escape characters.
static java.lang.String[] extractStringAndValueInParenthesis(java.lang.String val)
           
static java.lang.String getFileExtension(java.io.File file)
           
static java.lang.String getFileExtension(java.lang.String pathName)
           
static java.lang.String getFilePathWithoutExtension(java.io.File file)
           
static java.lang.String getFilePathWithoutExtension(java.lang.String pathName)
           
static java.lang.String getFirstPartofLangString(java.lang.String val, java.lang.String delim)
           
static java.lang.String getSecondPartofLangString(java.lang.String val, java.lang.String delim)
           
static java.lang.String getStackTrace(java.lang.Exception e)
           
static java.lang.String getStackTrace(java.lang.Throwable e)
           
static java.lang.String handleRunningSpaces(java.lang.String val)
           
static java.lang.String highlightTerms(java.lang.String s, java.util.ArrayList searchTermList, java.lang.String highlightStartTag, java.lang.String highlightEndTag)
           
static boolean isEmpty(java.lang.String val)
           
static boolean isNotEmpty(java.lang.String val)
           
static void main(java.lang.String[] args)
           
static java.lang.String makePrettyName(java.lang.String name)
          Handles underscores by replacing them with spaces, and handles camelCase by breaking words apart at the humps; it capitalizes the first word.
static java.lang.String midpad(java.lang.String s, int length)
          Pad the beginning and end of the given String with spaces until the String is of the given length.
static java.lang.String midpad(java.lang.String s, int length, char c)
          Pad the beginning and end of the given String with the given character until the result is the desired length.
static void parseDate(ArchDescription accession, java.lang.String dateString)
           
static java.lang.String postpad(java.lang.String s, int length)
          Pad the end of the given String with spaces until the String is of the given length.
static java.lang.String postpad(java.lang.String s, int length, char c)
          Append the given character to the String until the result is the desired length.
static java.lang.String prepad(java.lang.String s, int length)
          Pad the beginning of the given String with spaces until the String is of the given length.
static java.lang.String prepad(java.lang.String s, int length, char c)
          Pre-pend the given character to the String until the result is the desired length.
static java.lang.String replace(java.lang.String s, java.lang.String find, java.lang.String replace)
          Replace occurrences of a substring.
static void simpleParseDate(ArchDescription archDescription, java.lang.String str, boolean inclusive)
           
static java.lang.String[] split(java.lang.String s, java.lang.String delimiter)
          Split the given String into tokens.
static java.lang.String tagRemover(java.lang.String str)
          This method will remove the tags from a given string.
static java.lang.String trim(java.lang.String s, java.lang.String c)
          Trim any of the characters contained in the second string from the beginning and end of the first.
static java.lang.String trimToLength(java.lang.String stringToTrim, int maxLength)
           
static java.util.Hashtable unpackHash(java.lang.String str)
          A hash can be passed as a param using its toString() method; it comes in looking like: {key1=val1, key2=val2, key3=val3} ; this method restores it to a hash

copied from tedmaint in ServletUtilities (CM)

 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

StringHelper

public StringHelper()
Method Detail

convertPipeToCarriageReturn

public static java.lang.String convertPipeToCarriageReturn(java.lang.String toConvert)

makePrettyName

public static java.lang.String makePrettyName(java.lang.String name)
Handles underscores by replacing them with spaces, and handles camelCase by breaking words apart at the humps; it capitalizes the first word.


prepad

public static java.lang.String prepad(java.lang.String s,
                                      int length)
Pad the beginning of the given String with spaces until the String is of the given length.

If a String is longer than the desired length, it will not be truncated, however no padding will be added.

Parameters:
s - String to be padded.
length - desired length of result.
Returns:
padded String.
Throws:
java.lang.NullPointerException - if s is null.

prepad

public static java.lang.String prepad(java.lang.String s,
                                      int length,
                                      char c)
Pre-pend the given character to the String until the result is the desired length.

If a String is longer than the desired length, it will not be truncated, however no padding will be added.

Parameters:
s - String to be padded.
length - desired length of result.
c - padding character.
Returns:
padded String.
Throws:
java.lang.NullPointerException - if s is null.

postpad

public static java.lang.String postpad(java.lang.String s,
                                       int length)
Pad the end of the given String with spaces until the String is of the given length.

If a String is longer than the desired length, it will not be truncated, however no padding will be added.

Parameters:
s - String to be padded.
length - desired length of result.
Returns:
padded String.
Throws:
java.lang.NullPointerException - if s is null.

postpad

public static java.lang.String postpad(java.lang.String s,
                                       int length,
                                       char c)
Append the given character to the String until the result is the desired length.

If a String is longer than the desired length, it will not be truncated, however no padding will be added.

Parameters:
s - String to be padded.
length - desired length of result.
c - padding character.
Returns:
padded String.
Throws:
java.lang.NullPointerException - if s is null.

midpad

public static java.lang.String midpad(java.lang.String s,
                                      int length)
Pad the beginning and end of the given String with spaces until the String is of the given length. The result is that the original String is centered in the middle of the new string.

If the number of characters to pad is even, then the padding will be split evenly between the beginning and end, otherwise, the extra character will be added to the end.

If a String is longer than the desired length, it will not be truncated, however no padding will be added.

Parameters:
s - String to be padded.
length - desired length of result.
Returns:
padded String.
Throws:
java.lang.NullPointerException - if s is null.

midpad

public static java.lang.String midpad(java.lang.String s,
                                      int length,
                                      char c)
Pad the beginning and end of the given String with the given character until the result is the desired length. The result is that the original String is centered in the middle of the new string.

If the number of characters to pad is even, then the padding will be split evenly between the beginning and end, otherwise, the extra character will be added to the end.

If a String is longer than the desired length, it will not be truncated, however no padding will be added.

Parameters:
s - String to be padded.
length - desired length of result.
c - padding character.
Returns:
padded String.
Throws:
java.lang.NullPointerException - if s is null.

split

public static java.lang.String[] split(java.lang.String s,
                                       java.lang.String delimiter)
Split the given String into tokens.

This method is meant to be similar to the split function in other programming languages but it does not use regular expressions. Rather the String is split on a single String literal.

Unlike java.util.StringTokenizer which accepts multiple character tokens as delimiters, the delimiter here is a single String literal.

Each null token is returned as an empty String. Delimiters are never returned as tokens.

If there is no delimiter because it is either empty or null, the only element in the result is the original String.

StringHelper.split("1-2-3", "-");
result: {"1", "2", "3"}
StringHelper.split("-1--2-", "-");
result: {"", "1", ,"", "2", ""}
StringHelper.split("123", "");
result: {"123"}
StringHelper.split("1-2---3----4", "--");
result: {"1-2", "-3", "", "4"}

Parameters:
s - String to be split.
delimiter - String literal on which to split.
Returns:
an array of tokens.
Throws:
java.lang.NullPointerException - if s is null.

replace

public static java.lang.String replace(java.lang.String s,
                                       java.lang.String find,
                                       java.lang.String replace)
Replace occurrences of a substring.

StringHelper.replace("1-2-3", "-", "|");
result: "1|2|3"
StringHelper.replace("-1--2-", "-", "|");
result: "|1||2|"
StringHelper.replace("123", "", "|");
result: "123"
StringHelper.replace("1-2---3----4", "--", "|");
result: "1-2|-3||4"
StringHelper.replace("1-2---3----4", "--", "---");
result: "1-2----3------4"

Parameters:
s - String to be modified.
find - String to find.
replace - String to replace.
Returns:
a string with all the occurrences of the string to find replaced.
Throws:
java.lang.NullPointerException - if s is null.

escapeHTML

public static java.lang.String escapeHTML(java.lang.String s)
Replaces characters that may be confused by a HTML parser with their equivalent character entity references.

Any data that will appear as text on a web page should be be escaped. This is especially important for data that comes from untrusted sources such as Internet users. A common mistake in CGI programming is to ask a user for data and then put that data on a web page. For example:

 Server: What is your name?
 User: <b>Joe<b>
 Server: Hello Joe, Welcome
If the name is put on the page without checking that it doesn't contain HTML code or without sanitizing that HTML code, the user could reformat the page, insert scripts, and control the the content on your web server.

This method will replace HTML characters such as > with their HTML entity reference (&gt;) so that the html parser will be sure to interpret them as plain text rather than HTML or script.

This method should be used for both data to be displayed in text in the html document, and data put in form elements. For example:
<html><body>This in not a &lt;tag&gt; in HTML</body></html>
and
<form><input type="hidden" name="date" value="This data could be &quot;malicious&quot;"></form>
In the second example, the form data would be properly be resubmitted to your cgi script in the URLEncoded format:
This data could be %22malicious%22

Parameters:
s - String to be escaped
Returns:
escaped String
Throws:
java.lang.NullPointerException - if s is null.

escapeSQL

public static java.lang.String escapeSQL(java.lang.String s)
Replaces characters that may be confused by an SQL parser with their equivalent escape characters.

Any data that will be put in an SQL query should be be escaped. This is especially important for data that comes from untrusted sources such as Internet users.

For example if you had the following SQL query:
"SELECT * FROM addresses WHERE name='" + name + "' AND private='N'"
Without this function a user could give " OR 1=1 OR ''='" as their name causing the query to be:
"SELECT * FROM addresses WHERE name='' OR 1=1 OR ''='' AND private='N'"
which will give all addresses, including private ones.
Correct usage would be:
"SELECT * FROM addresses WHERE name='" + StringHelper.escapeSQL(name) + "' AND private='N'"

Another way to avoid this problem is to use a PreparedStatement with appropriate placeholders.

Parameters:
s - String to be escaped
Returns:
escaped String
Throws:
java.lang.NullPointerException - if s is null.

escapeJavaLiteral

public static java.lang.String escapeJavaLiteral(java.lang.String s)
Replaces characters that are not allowed in a Java style string literal with their escape characters. Specifically quote ("), single quote ('), new line (\n), carriage return (\r), and backslash (\), and tab (\t) are escaped.

Parameters:
s - String to be escaped
Returns:
escaped String
Throws:
java.lang.NullPointerException - if s is null.

trim

public static java.lang.String trim(java.lang.String s,
                                    java.lang.String c)
Trim any of the characters contained in the second string from the beginning and end of the first.

Parameters:
s - String to be trimmed.
c - list of characters to trim from s.
Returns:
trimmed String.
Throws:
java.lang.NullPointerException - if s is null.

highlightTerms

public static java.lang.String highlightTerms(java.lang.String s,
                                              java.util.ArrayList searchTermList,
                                              java.lang.String highlightStartTag,
                                              java.lang.String highlightEndTag)

unpackHash

public static java.util.Hashtable unpackHash(java.lang.String str)
A hash can be passed as a param using its toString() method; it comes in looking like: {key1=val1, key2=val2, key3=val3} ; this method restores it to a hash

copied from tedmaint in ServletUtilities (CM)


getStackTrace

public static java.lang.String getStackTrace(java.lang.Exception e)

getStackTrace

public static java.lang.String getStackTrace(java.lang.Throwable e)

trimToLength

public static java.lang.String trimToLength(java.lang.String stringToTrim,
                                            int maxLength)

parseDate

public static void parseDate(ArchDescription accession,
                             java.lang.String dateString)

simpleParseDate

public static void simpleParseDate(ArchDescription archDescription,
                                   java.lang.String str,
                                   boolean inclusive)

getFileExtension

public static java.lang.String getFileExtension(java.io.File file)

getFileExtension

public static java.lang.String getFileExtension(java.lang.String pathName)

getFilePathWithoutExtension

public static java.lang.String getFilePathWithoutExtension(java.io.File file)

getFilePathWithoutExtension

public static java.lang.String getFilePathWithoutExtension(java.lang.String pathName)

tagRemover

public static java.lang.String tagRemover(java.lang.String str)
This method will remove the tags from a given string. If the string contains no tags it will simply be returned. Example: string in tag returns "string in tag" Example: string in tag returns "string in tag"


extractStringAndValueInParenthesis

public static java.lang.String[] extractStringAndValueInParenthesis(java.lang.String val)

getFirstPartofLangString

public static java.lang.String getFirstPartofLangString(java.lang.String val,
                                                        java.lang.String delim)

getSecondPartofLangString

public static java.lang.String getSecondPartofLangString(java.lang.String val,
                                                         java.lang.String delim)

isNotEmpty

public static boolean isNotEmpty(java.lang.String val)

isEmpty

public static boolean isEmpty(java.lang.String val)

concatenateFields

public static java.lang.String concatenateFields(java.lang.String delimiter,
                                                 java.lang.String... fields)

concatenateAllFields

public static java.lang.String concatenateAllFields(java.lang.String delimiter,
                                                    java.lang.String... fields)

handleRunningSpaces

public static java.lang.String handleRunningSpaces(java.lang.String val)

cleanUpWhiteSpace

public static java.lang.String cleanUpWhiteSpace(java.lang.String stringToStrip)

concat

public static java.lang.String concat(java.util.ArrayList array,
                                      java.lang.String seperator)

concat

public static java.lang.String concat(java.lang.String seperator,
                                      java.lang.String... strings)

convertToNmtoken

public static java.lang.String convertToNmtoken(java.lang.String string)

main

public static void main(java.lang.String[] args)