核心代码:
package junjie;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) {
String valuesText =
"id,主键,第一个\n" +
"name,名字,第二个\n"+
"age,年龄,第三个\n";
String moduleText = "{2}{0++} private String {0};//{1}";
String cutSignText = ",";
String connSignText = "";
System.out.println(new Test().handler(valuesText,moduleText,cutSignText,connSignText));;
}
/** * * @param valuesText 要填入的参数值 * @param moduleText 内容模板 * @param cutSignText 参数分隔符,传null时,默认是空格分割 * @param connSignText 结果连接符,传null时,默认是换行连接 * @return */
public String handler(String valuesText,String moduleText,String cutSignText,String connSignText) {
moduleText = initModule(moduleText);
List<Integer> icrList = getModuleIcr(moduleText,"[0-9]{1,}\\+\\+");
String regex = "[ \t]+";
String connStr = "\n";
if (cutSignText != null && cutSignText.length() > 0) {
regex = cutSignText;
}
if (connSignText != null && connSignText.length() > 0) {
connStr = connSignText;
}
StringBuilder sb = new StringBuilder();
String[] fieds = valuesText.split("\n");
for (int i = 0; i < fieds.length; i++) {
if (fieds[i].trim().length() == 0) {
continue;
}
String[] valueArr = fieds[i].split(regex);
String result = MessageFormat.format(moduleText, valueArr)
.replace("<>", "{")
.replace("</>", "}");
if (!icrList.isEmpty()){
for (Integer icr : icrList){
result = result.replace("{"+icr+"++}",String.valueOf(i+icr));
}
}
sb.append(result).append(connStr);
}
return sb.toString();
}
/** * 对输入模板进行初始化 * @param moduleText * @return */
private String initModule(String moduleText){
moduleText = moduleText.replaceAll("'", "''")
.replace("{", "<>")
.replace("}", "</>");
String ss[] = moduleText.split("[<>,</>]");
for (int i = 0; i < ss.length; i++) {
if (ss[i].matches("[0-9]{1,}")) {
moduleText = moduleText.replace("<>" + ss[i] + "</>", "{" + ss[i] + "}");
}
}
return moduleText;
}
/** * 获取模板自增值 * @param moduleText * @return 若存在则返回,若无则返回-1 */
private List<Integer> getModuleIcr(String moduleText, String regex){
List<Integer> icrList = new ArrayList<>();
moduleText = moduleText.replaceAll("'", "''")
.replace("{", "<>")
.replace("}", "</>");
String ss[] = moduleText.split("[<>,</>]");
for (int i = 0; i < ss.length; i++) {
if (ss[i].matches(regex)) {
icrList.add(Integer.valueOf(ss[i].substring(0,ss[i].indexOf("+"))));
}
}
return icrList;
}
}
运行结果:
文章评论