/*
* Copyright (C) 2007 Reto Schuettel, Robin Stocker
*
* IFS Institute for Software, HSR Rapperswil, Switzerland
*
*/
package org.python.pydev.refactoring.utils;
import java.util.LinkedList;
import java.util.regex.Pattern;
public final class StringUtils {
private static final Pattern DOT = Pattern.compile("\\.");
private static final Pattern SLASH = Pattern.compile("\\/");
private StringUtils() {
}
/**
* Joins the supplied parts together, using dots as a glue
*
* @param parts parts to join
* @return string containing joined parts
*/
public static String join(char delimiter, Iterable parts) {
StringBuilder sb = new StringBuilder();
boolean first = true;
for (Object part : parts) {
if (first) {
first = false;
} else {
sb.append(delimiter);
}
sb.append(part);
}
return sb.toString();
}
/**
* Returns the string with the first character in upper case.
*
* @param string "example string"
* @return "Example string"
*/
public static String capitalize(String string) {
if (string.length() == 0) {
return string;
} else {
return string.substring(0, 1).toUpperCase() + string.substring(1);
}
}
/**
* Takes the '/' separated string and removes level parts of it
*
* Example:
* input is foo/bar/baz
*
* with level 1: "foo/bar"
* with level 2: "foo"
* with level 3 ""
*
* @param string
* @param level level
* @return truncated string
*/
public static String stripParts(String string, int level) {
/* level times remove /.*$ */
for (int i = 0; i < level; i++) {
int index = string.lastIndexOf('/');
if (index < 0) {
/* no slashhes.. very well */
return "";
}
string = string.substring(0, index);
}
return string;
}
public static LinkedList<String> dotSplitter(String string) {
return splitter(string, DOT);
}
public static LinkedList<String> slashSplitter(String string) {
return splitter(string, SLASH);
}
public static LinkedList<String> splitter(String string, Pattern re) {
LinkedList<String> parts = new LinkedList<String>();
for (String part : re.split(string)) {
parts.add(part);
}
return parts;
}
}