如何修改for循环首次迭代逻辑 避免字符串拼接开头多出+号
可选实现方案
最小改动方案(无需大幅调整原有循环逻辑)
只需要新增一个布尔标记位判断是否为首次拼接,首次拼接直接赋值字符串片段,后续拼接沿用你原来的+拼接逻辑即可,原有循环结构几乎不变:
// 修正了你原代码里的变量拼写错误:inpputString -> inputString,未定义的mainString替换为实际输入变量 String inputString = "example input string"; String outputString = ""; String[] stringPieces = inputString.split(" "); boolean firstFlag = true; for (String strTemp : stringPieces){ if (firstFlag) { outputString = strTemp; firstFlag = false; } else { outputString = outputString + "+" + strTemp; } }
运行后输出结果就是你需要的example+input+string,不会在开头多出多余的加号。
简洁原生API方案(JDK 8+支持)
如果允许替换手写循环,直接用JDK内置的String.join()方法即可,该方法原生支持指定分隔符拼接字符串数组,自动处理首尾不会多出分隔符,代码量最少:
String inputString = "example input string"; String[] stringPieces = inputString.split(" "); String outputString = String.join("+", stringPieces);
高性能可选方案
如果需要拼接的字符串片段数量较多,推荐使用StringBuilder替代普通+拼接,避免频繁创建临时字符串对象损耗性能,逻辑改动也很小:
String inputString = "example input string"; String outputString; String[] stringPieces = inputString.split(" "); StringBuilder sb = new StringBuilder(); for (int i = 0; i < stringPieces.length; i++) { if (i != 0) { sb.append("+"); } sb.append(stringPieces[i]); } outputString = sb.toString();
注:你贴的原代码存在两个小问题:一是输入变量名
inpputString多写了一个p,二是split调用时使用了未定义的mainString变量,实际运行会报错,上面的示例代码已经修正了这两个问题。
内容的提问来源于stack exchange,提问作者Clone
相关产品推荐
相关产品推荐

