Java如何实现多个字符串按同位置字符垂直拼接生成目标格式
解决方案
实现思路
- 将所有输入字符串存入可变参数列表,适配任意数量的列,不用硬编码每个字符串变量
- 自动计算所有输入字符串的最大长度作为行数,适配不定长的输入内容
- 增加边界校验,避免字符串长度不一致导致的索引越界错误
- 使用
StringBuilder做字符串拼接,比直接String+=性能提升明显,尤其适合数据量大的场景
完整代码示例
public class StringConvertUtil { // 通用转换方法,支持传入任意数量的字符串 public static String convert(String... inputs) { // 入参为空直接返回空字符串 if (inputs == null || inputs.length == 0) { return ""; } // 计算所有字符串的最大长度,作为循环行数 int maxLength = 0; for (String s : inputs) { if (s != null && s.length() > maxLength) { maxLength = s.length(); } } StringBuilder resultBuilder = new StringBuilder(); // 外层循环遍历每行(对应每个字符索引) for (int i = 0; i < maxLength; i++) { // 内层循环遍历每列(对应每个输入字符串) for (int j = 0; j < inputs.length; j++) { String currentStr = inputs[j]; // 当前索引小于字符串长度时取对应字符,否则补空,可自定义占位符 char c = (currentStr != null && i < currentStr.length()) ? currentStr.charAt(i) : ' '; resultBuilder.append(c); // 不是最后一列的话加逗号分隔 if (j != inputs.length - 1) { resultBuilder.append(", "); } } // 每行结束加换行 resultBuilder.append("\n"); } return resultBuilder.toString(); } public static void main(String[] args) { String a = "ABC"; String b = "BCD"; String c = "CDE"; // 后续新增d、e、f等字符串时,直接在参数列表追加即可 String result = convert(a, b, c); System.out.println(result); } }
输出效果
运行代码后输出和要求的格式完全一致:
A, B, C B, C, D C, D, E
扩展说明
如果要求所有输入字符串长度必须一致,可以在计算maxLength的步骤增加校验逻辑,长度不一致时直接抛出异常即可。
内容的提问来源于stack exchange,提问作者Karord
相关产品推荐
相关产品推荐

