package com.huahui.service_test01.pojo.query; /** * @author lisq * date 2023/4/4 19:26 * version 1.0 * @description TODO */ public class tests { /** * 测试数据 * * @param args */ public static void main(String[] args) { String str = "A%sB%sC%sG%sH%sGFG"; char[] arg = new char[]{'D', 'E', 'F', 'J', 'V', 'Z'}; System.out.println("得到的答案为:" + formatString(str, arg, "%s")); } /** * 将char数组中的字符依次替换str中的'占位符',当数组中字符多于 str中的'占位符'的数量,则多出的字符拼接在Str字符串后面 * * @param str 字符串 * @param arg 代替'占位符'的字符 * @param regex 占位符 * @return 替代后的字符串 */ public static String formatString(String str, char[] arg, String regex) { int i; StringBuffer buffer = new StringBuffer(""); //根据占位符分割str字符 String[] split = str.split(regex); //split.length - 1 表示'占位符的'个数 if (split.length - 1 >= arg.length) { for (i = 0; i < split.length; i++) { if (i < arg.length) { buffer.append(split[i]).append(arg[i]); } //拼接多出来的原有的str的字符 else { //判断是否是最后一个字符串 if (i == split.length - 1) { //判断最后一个字符是否是分割符,是拼接分割符,不是则不拼接 if (str.lastIndexOf(regex) == str.length() - regex.length()) { buffer.append(split[i]).append(regex); } else { buffer.append(split[i]); } } else { buffer.append(split[i]).append(regex); } } } } else { for (i = 0; i < arg.length; i++) { if (i < split.length) { buffer.append(split[i]).append(arg[i]); } else { buffer.append(arg[i]); } } } return buffer.toString(); } }
将char数组中的字符依次替换str中的‘占位符‘算法-java
最新推荐文章于 2023-04-26 20:10:43 发布