参考JDK String 类的 trim 方法实现
/**
* 去掉回车、空格、制表符
*
* @param str 原字符串
* @return 转换后的字符串
*/
private static String trimAll(String str){
if (str == null){
return null;
}
if (str.length() == 0){
return str;
}
// 去掉空格
str = str.trim();
// 去掉回车
str = trimR(str);
// 去掉换行符
str = trimN(str);
// 去掉制表符
str = trimT(str);
return str;
}
/**
* 去掉字符串左右回车
*
* @param str 原字符串
* @return 转换后的字符串
*/
private static String trimR(@NotNull String str){
int len = str.length();
int st = 0;
char[] val = str.toCharArray();
while ((st < len) && (val[st] <= '\n')) {
st++;
}
while ((st < len) && (val[len - 1] <= '\n')) {
len--;
}
return ((st > 0) || (len < str.length())) ? str.substring(st, len) : str;
}
/**
* 去掉字符串左右换行
*
* @param str 原字符串
* @return 转换后的字符串
*/
private static String trimN(@NotNull String str){
int len = str.length();
int st = 0;
char[] val = str.toCharArray();
while ((st < len) && (val[st] <= '\r')) {
st++;
}
while ((st < len) && (val[len - 1] <= '\r')) {
len--;
}
return ((st > 0) || (len < str.length())) ? str.substring(st, len) : str;
}
/**
* 去掉字符串左右制表符
*
* @param str 原字符串
* @return 转换后的字符串
*/
private static String trimT(@NotNull String str){
int len = str.length();
int st = 0;
char[] val = str.toCharArray();
while ((st < len) && (val[st] <= '\t')) {
st++;
}
while ((st < len) && (val[len - 1] <= '\t')) {
len--;
}
return ((st > 0) || (len < str.length())) ? str.substring(st, len) : str;
}