
net.dongliu.commons.Strings Maven / Gradle / Ivy
package net.dongliu.commons;
import javax.annotation.Nullable;
/**
* Utils for String
*/
public class Strings {
/**
* Return empty str for null str
*/
public static String nullToEmpty(@Nullable String str) {
return str == null ? "" : str;
}
/**
* Get sub string between two str.
*/
public static String between(String str, String startStr, String endStr) {
int start = str.indexOf(startStr);
if (start == -1) {
return "";
}
start += startStr.length();
int end = str.indexOf(endStr, start);
if (end == -1) {
return "";
}
return str.substring(start, end);
}
public static String before(String str, String substr) {
if (str.isEmpty()) {
return str;
}
int end = str.indexOf(substr);
if (end < 0) {
return str;
}
return str.substring(0, end);
}
public static String after(String str, String substr) {
if (str.isEmpty()) {
return str;
}
int begin = str.indexOf(substr);
if (begin < 0) {
return str;
}
return str.substring(begin + substr.length());
}
public static String beforeLast(String str, String substr) {
if (str.isEmpty()) {
return str;
}
int end = str.lastIndexOf(substr);
if (end < 0) {
return str;
}
return str.substring(0, end);
}
public static String afterLast(String str, String substr) {
if (str.isEmpty()) {
return str;
}
int begin = str.lastIndexOf(substr);
if (begin < 0) {
return str;
}
return str.substring(begin + substr.length());
}
/**
* Substring, could use negative idx, for example, -1 means str.length() - 1
*/
public static String slice(String str, int begin, int end) {
int len = str.length();
if (begin < 0) {
begin += len;
}
if (end < 0) {
end += len;
}
return str.substring(begin, end);
}
/**
* Get substring from left with size
*/
public static String sliceLeft(String str, int len) {
return str.substring(0, len);
}
/**
* Get substring from right with size
*/
public static String sliceRight(String str, int len) {
return str.substring(str.length() - len);
}
/**
* Padding string at left with padding char
*/
public static String padLeft(String str, int len, char padding) {
if (str.length() > len) {
return str;
}
StringBuilder sb = new StringBuilder(len);
int paddingLen = len - str.length();
for (int i = 0; i < paddingLen; i++) {
sb.append(padding);
}
sb.append(str);
return sb.toString();
}
/**
* Padding string at left with white space
*/
public static String padLeft(String str, int len) {
return padLeft(str, len, ' ');
}
/**
* Padding string at right with padding char
*/
public static String padRight(String str, int len, char padding) {
if (str.length() > len) {
return str;
}
StringBuilder sb = new StringBuilder(len);
sb.append(str);
int paddingLen = len - str.length();
for (int i = 0; i < paddingLen; i++) {
sb.append(padding);
}
return sb.toString();
}
/**
* Padding string at right with white space
*/
public static String padRight(String str, int len) {
return padRight(str, len, ' ');
}
/**
* Padding string at center with white space
*/
public static String padCenter(String str, int len) {
return padCenter(str, len, ' ');
}
/**
* Padding string at center with padding char
*/
public static String padCenter(String str, int len, char padding) {
if (str.length() > len) {
return str;
}
StringBuilder sb = new StringBuilder(len);
int paddingLen = len - str.length();
int left = paddingLen / 2;
int right = paddingLen - left;
for (int i = 0; i < left; i++) {
sb.append(padding);
}
sb.append(str);
for (int i = 0; i < right; i++) {
sb.append(padding);
}
return sb.toString();
}
/**
* Get new string with str repeat count
*/
public static String repeat(String str, int count) {
StringBuilder sb = new StringBuilder(str.length() * count);
for (int i = 0; i < count; i++) {
sb.append(str);
}
return sb.toString();
}
/**
* To upper case the first char
*/
public static String capitalize(String str) {
if (str.isEmpty()) {
return str;
}
return str.substring(0, 1).toUpperCase() + str.substring(1);
}
/**
* Only return true when c is ascii digit char
*/
public static boolean isDigit(char c) {
return c >= '0' && c <= '9';
}
/**
* Only return true when c is ascii latin letter
*/
public static boolean isLetter(char c) {
return (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z');
}
/**
* If this str is a int num
* return true if string contains and only contains int char
*/
public static boolean isIntNumber(String str) {
if (str.isEmpty()) {
return false;
}
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (!isDigit(c)) {
return false;
}
}
return true;
}
/**
* If this str is a num
*/
public static boolean isNumber(String str) {
if (str.isEmpty()) {
return false;
}
int count = 0;
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (!isDigit(c)) {
if (c != '.') {
return false;
} else {
if (i == 0 || i == str.length() - 1) {
return false;
}
if (++count > 1) {
return false;
}
}
}
}
return true;
}
/**
* Format string
*/
public static String format(String pattern, Object... values) {
return new StringFormatter(pattern).format(values);
}
/**
* Parse str as int. return 0 if str is not a valid int num
*/
public static int toInt(String str) {
return toInt(str, 0);
}
/**
* Parse str as int. return defaultValue if str is not a valid int num
*/
public static int toInt(String str, int defaultValue) {
try {
return Integer.parseInt(str);
} catch (NumberFormatException e) {
return defaultValue;
}
}
/**
* Parse str as long. return 0 if str is not a valid num
*/
public static long toLong(String str) {
return toLong(str, 0);
}
/**
* Parse str as long. return defaultValue if str is not a valid num
*/
public static long toLong(String str, long defaultValue) {
try {
return Long.parseLong(str);
} catch (NumberFormatException e) {
return defaultValue;
}
}
/**
* Parse str as float. return 0 if str is not a valid num
*/
public static float toFloat(String str) {
return toFloat(str, 0);
}
/**
* Parse str as float. return defaultValue if str is not a valid num
*/
public static float toFloat(String str, float defaultValue) {
try {
return Float.parseFloat(str);
} catch (NumberFormatException e) {
return defaultValue;
}
}
/**
* Parse str as double. return 0 if str is not a valid num
*/
public static double toDouble(String str) {
return toDouble(str, 0);
}
/**
* Parse str as float. return defaultValue if str is not a valid num
*/
public static double toDouble(String str, double defaultValue) {
try {
return Double.parseDouble(str);
} catch (NumberFormatException e) {
return defaultValue;
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy