📄 stringutils.java.svn-base
字号:
* delimiter (neither element includes the
* delimiter); or <code>null</code> if the
* delimiter wasn't found in the given input
* String
*/
public static String[] split(String toSplit, String delimiter) {
if (!hasLength(toSplit) || !hasLength(delimiter)) {
return null;
}
int offset = toSplit.indexOf(delimiter);
if (offset < 0) {
return null;
}
String beforeDelimiter = toSplit.substring(0, offset);
String afterDelimiter = toSplit.substring(offset + delimiter.length());
return new String[] { beforeDelimiter, afterDelimiter };
}
/**
* Take an array Strings and split each element based on
* the given delimiter. A <code>Properties</code>
* instance is then generated, with the left of the
* delimiter providing the key, and the right of the
* delimiter providing the value.
* <p>
* Will trim both the key and value before adding them
* to the <code>Properties</code> instance.
*
* @param array
* the array to process
* @param delimiter
* to split each element using (typically the
* equals symbol)
* @return a <code>Properties</code> instance
* representing the array contents, or
* <code>null</code> if the array to process
* was null or empty
*/
public static Properties splitArrayElementsIntoProperties(String[] array,
String delimiter) {
return splitArrayElementsIntoProperties(array, delimiter, null);
}
/**
* Take an array Strings and split each element based on
* the given delimiter. A <code>Properties</code>
* instance is then generated, with the left of the
* delimiter providing the key, and the right of the
* delimiter providing the value.
* <p>
* Will trim both the key and value before adding them
* to the <code>Properties</code> instance.
*
* @param array
* the array to process
* @param delimiter
* to split each element using (typically the
* equals symbol)
* @param charsToDelete
* one or more characters to remove from each
* element prior to attempting the split
* operation (typically the quotation mark
* symbol), or <code>null</code> if no
* removal should occur
* @return a <code>Properties</code> instance
* representing the array contents, or
* <code>null</code> if the array to process
* was null or empty
*/
public static Properties splitArrayElementsIntoProperties(String[] array,
String delimiter, String charsToDelete) {
if (array == null || array.length == 0) {
return null;
}
Properties result = new Properties();
for (int i = 0; i < array.length; i++) {
String element = array[i];
if (charsToDelete != null) {
element = deleteAny(array[i], charsToDelete);
}
String[] splittedElement = split(element, delimiter);
if (splittedElement == null) {
continue;
}
result.setProperty(splittedElement[0].trim(), splittedElement[1]
.trim());
}
return result;
}
/**
* Tokenize the given String into a String array via a
* StringTokenizer. Trims tokens and omits empty tokens.
* <p>
* The given delimiters string is supposed to consist of
* any number of delimiter characters. Each of those
* characters can be used to separate tokens. A
* delimiter is always a single character; for
* multi-character delimiters, consider using
* <code>delimitedListToStringArray</code>
*
* @param str
* the String to tokenize
* @param delimiters
* the delimiter characters, assembled as
* String (each of those characters is
* individually considered as delimiter).
* @return an array of the tokens
* @see java.util.StringTokenizer
* @see java.lang.String#trim
* @see #delimitedListToStringArray
*/
public static String[] tokenizeToStringArray(String str, String delimiters) {
return tokenizeToStringArray(str, delimiters, true, true);
}
/**
* Tokenize the given String into a String array via a
* StringTokenizer.
* <p>
* The given delimiters string is supposed to consist of
* any number of delimiter characters. Each of those
* characters can be used to separate tokens. A
* delimiter is always a single character; for
* multi-character delimiters, consider using
* <code>delimitedListToStringArray</code>
*
* @param str
* the String to tokenize
* @param delimiters
* the delimiter characters, assembled as
* String (each of those characters is
* individually considered as delimiter)
* @param trimTokens
* trim the tokens via String's
* <code>trim</code>
* @param ignoreEmptyTokens
* omit empty tokens from the result array
* (only applies to tokens that are empty
* after trimming; StringTokenizer will not
* consider subsequent delimiters as token in
* the first place).
* @return an array of the tokens
* @see java.util.StringTokenizer
* @see java.lang.String#trim
* @see #delimitedListToStringArray
*/
public static String[] tokenizeToStringArray(String str, String delimiters,
boolean trimTokens, boolean ignoreEmptyTokens) {
if (str == null) {
return new String[] {};
}
StringTokenizer st = new StringTokenizer(str, delimiters);
List tokens = new ArrayList();
while (st.hasMoreTokens()) {
String token = st.nextToken();
if (trimTokens) {
token = token.trim();
}
if (!ignoreEmptyTokens || token.length() > 0) {
tokens.add(token);
}
}
return toStringArray(tokens);
}
/**
* Take a String which is a delimited list and convert
* it to a String array.
* <p>
* A single delimiter can consists of more than one
* character: It will still be considered as single
* delimiter string, rather than as bunch of potential
* delimiter characters - in contrast to
* <code>tokenizeToStringArray</code>.
*
* @param str
* the input String
* @param delimiter
* the delimiter between elements (this is a
* single delimiter, rather than a bunch
* individual delimiter characters)
* @return an array of the tokens in the list
* @see #tokenizeToStringArray
*/
public static String[] delimitedListToStringArray(String str,
String delimiter) {
if (str == null) {
return new String[0];
}
if (delimiter == null) {
return new String[] { str };
}
List result = new ArrayList();
if ("".equals(delimiter)) {
for (int i = 0; i < str.length(); i++) {
result.add(str.substring(i, i + 1));
}
} else {
int pos = 0;
int delPos = 0;
while ((delPos = str.indexOf(delimiter, pos)) != -1) {
result.add(str.substring(pos, delPos));
pos = delPos + delimiter.length();
}
if (str.length() > 0 && pos <= str.length()) {
// Add rest of String, but not in case of
// empty input.
result.add(str.substring(pos));
}
}
return toStringArray(result);
}
/**
* Convert a CSV list into an array of Strings.
*
* @param str
* CSV list
* @return an array of Strings, or the empty array if s
* is null
*/
public static String[] commaDelimitedListToStringArray(String str) {
return delimitedListToStringArray(str, ",");
}
/**
* Convenience method to convert a CSV string list to a
* set. Note that this will suppress duplicates.
*
* @param str
* CSV String
* @return a Set of String entries in the list
*/
public static Set commaDelimitedListToSet(String str) {
Set set = new TreeSet();
String[] tokens = commaDelimitedListToStringArray(str);
for (int i = 0; i < tokens.length; i++) {
set.add(tokens[i]);
}
return set;
}
/**
* Convenience method to return a String array as a
* delimited (e.g. CSV) String. E.g. useful for
* toString() implementations.
*
* @param arr
* array to display. Elements may be of any
* type (toString will be called on each
* element).
* @param delim
* delimiter to use (probably a ",")
*/
public static String arrayToDelimitedString(Object[] arr, String delim) {
if (arr == null) {
return "";
}
StringBuffer sb = new StringBuffer();
for (int i = 0; i < arr.length; i++) {
if (i > 0) {
sb.append(delim);
}
sb.append(arr[i]);
}
return sb.toString();
}
/**
* Convenience method to return a Collection as a
* delimited (e.g. CSV) String. E.g. useful for
* toString() implementations.
*
* @param coll
* Collection to display
* @param delim
* delimiter to use (probably a ",")
* @param prefix
* string to start each element with
* @param suffix
* string to end each element with
*/
public static String collectionToDelimitedString(Collection coll,
String delim, String prefix, String suffix) {
if (coll == null) {
return "";
}
StringBuffer sb = new StringBuffer();
Iterator it = coll.iterator();
int i = 0;
while (it.hasNext()) {
if (i > 0) {
sb.append(delim);
}
sb.append(prefix).append(it.next()).append(suffix);
i++;
}
return sb.toString();
}
/**
* Convenience method to return a Collection as a
* delimited (e.g. CSV) String. E.g. useful for
* toString() implementations.
*
* @param coll
* Collection to display
* @param delim
* delimiter to use (probably a ",")
*/
public static String collectionToDelimitedString(Collection coll,
String delim) {
return collectionToDelimitedString(coll, delim, "", "");
}
/**
* Convenience method to return a String array as a CSV
* String. E.g. useful for toString() implementations.
*
* @param arr
* array to display. Elements may be of any
* type (toString will be called on each
* element).
*/
public static String arrayToCommaDelimitedString(Object[] arr) {
return arrayToDelimitedString(arr, ",");
}
/**
* Convenience method to return a Collection as a CSV
* String. E.g. useful for toString() implementations.
*
* @param coll
* Collection to display
*/
public static String collectionToCommaDelimitedString(Collection coll) {
return collectionToDelimitedString(coll, ",");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -