package com.yqzx.generator.util;
|
|
import cn.hutool.core.util.StrUtil;
|
|
import java.net.URISyntaxException;
|
import java.util.Arrays;
|
|
/**
|
* @description: 工具类
|
* @author: chaoyapeng
|
* @time: 2020/8/18 16:32
|
*/
|
public class ToolUtil {
|
|
/**
|
* 首字母变大写
|
*/
|
public static String firstLetterToUpper(String str) {
|
char firstChar = str.charAt(0);
|
if (firstChar >= 'a' && firstChar <= 'z') {
|
char[] arr = str.toCharArray();
|
arr[0] -= ('a' - 'A');
|
return new String(arr);
|
}
|
return str;
|
}
|
|
/**
|
* 格式化文本
|
*
|
* @param template 文本模板,被替换的部分用 {} 表示
|
* @param values 参数值
|
* @return 格式化后的文本
|
*/
|
/**
|
* 格式化文本, {} 表示占位符<br>
|
* 例如:format("aaa {} ccc", "bbb") ----> aaa bbb ccc
|
*
|
* @param template 文本模板,被替换的部分用 {} 表示
|
* @param values 参数值
|
* @return 格式化后的文本
|
*/
|
public static String format(String template, Object... values) {
|
if (values == null || values.length == 0) {
|
return template;
|
}
|
|
final StringBuilder sb = new StringBuilder();
|
final int length = template.length();
|
|
int valueIndex = 0;
|
char currentChar;
|
for (int i = 0; i < length; i++) {
|
if (valueIndex >= values.length) {
|
sb.append(sub(template, i, length));
|
break;
|
}
|
|
currentChar = template.charAt(i);
|
if (currentChar == '{') {
|
final char nextChar = template.charAt(++i);
|
if (nextChar == '}') {
|
sb.append(values[valueIndex++]);
|
} else {
|
sb.append('{').append(nextChar);
|
}
|
} else {
|
sb.append(currentChar);
|
}
|
|
}
|
|
return sb.toString();
|
}
|
|
/**
|
* 改进JDK subString<br>
|
* index从0开始计算,最后一个字符为-1<br>
|
* 如果from和to位置一样,返回 "" <br>
|
* 如果from或to为负数,则按照length从后向前数位置,如果绝对值大于字符串长度,则from归到0,to归到length<br>
|
* 如果经过修正的index中from大于to,则互换from和to
|
* example: <br>
|
* abcdefgh 2 3 -> c <br>
|
* abcdefgh 2 -3 -> cde <br>
|
*
|
* @param string String
|
* @param fromIndex 开始的index(包括)
|
* @param toIndex 结束的index(不包括)
|
* @return 字串
|
*/
|
public static String sub(String string, int fromIndex, int toIndex) {
|
int len = string.length();
|
if (fromIndex < 0) {
|
fromIndex = len + fromIndex;
|
if(fromIndex < 0 ) {
|
fromIndex = 0;
|
}
|
} else if(fromIndex >= len) {
|
fromIndex = len -1;
|
}
|
if (toIndex < 0) {
|
toIndex = len + toIndex;
|
if(toIndex < 0) {
|
toIndex = len;
|
}
|
} else if(toIndex > len) {
|
toIndex = len;
|
}
|
if (toIndex < fromIndex) {
|
int tmp = fromIndex;
|
fromIndex = toIndex;
|
toIndex = tmp;
|
}
|
if (fromIndex == toIndex) {
|
return "";
|
}
|
char[] strArray = string.toCharArray();
|
char[] newStrArray = Arrays.copyOfRange(strArray, fromIndex, toIndex);
|
return new String(newStrArray);
|
}
|
|
/**
|
* 获取项目路径
|
* @param filePath
|
* @return
|
*/
|
public static String getWebRootPath(String filePath) {
|
try {
|
String path = ToolUtil.class.getClassLoader().getResource("").toURI().getPath();
|
path = path.replace("/target/classes/", "");
|
path = path.replace("file:/", "");
|
if (StrUtil.isEmpty(filePath)) {
|
return path;
|
} else {
|
return path + "/" + filePath;
|
}
|
} catch (URISyntaxException e) {
|
throw new RuntimeException(e);
|
}
|
}
|
|
}
|