如何从含AAA-前缀的String数组提取后缀元素?现有代码结果不符
解决你的字符串数组提取问题
我看你现在是想把String[] q1={"AAA-BBB","AAA-CCC","AAA-DDD"}转换成只包含后缀"BBB","CCC","DDD"的数组,但你写的代码有两个关键问题导致结果不符合预期:
- 你在循环内部每次都新建了ArrayList,这意味着每次循环的结果都会被新的列表覆盖,循环结束后你根本留不下所有元素
- 使用
split("AAA-")分割后,每个字符串会得到["", "目标值"]这样的数组,直接转成列表会包含空字符串,不是你要的结果
给你两个可行的解决方案,挑顺手的用就行:
方案1:分割后取目标元素
这种方式适合如果AAA-可能出现在字符串其他位置的情况(虽然你现在的场景里是固定开头):
String[] q1 = {"AAA-BBB", "AAA-CCC", "AAA-DDD"}; List<String> tempList = new ArrayList<>(); for (String item : q1) { String[] splitParts = item.split("AAA-"); // 确保分割后有至少两个元素,避免数组越界 if (splitParts.length > 1) { tempList.add(splitParts[1]); } } // 转成你需要的String数组 String[] temp = tempList.toArray(new String[0]);
方案2:直接截取后缀(更高效)
如果确定所有字符串都是以AAA-开头的,直接截取这个前缀之后的内容会更高效:
String[] q1 = {"AAA-BBB", "AAA-CCC", "AAA-DDD"}; List<String> tempList = new ArrayList<>(); int prefixLength = "AAA-".length(); for (String item : q1) { tempList.add(item.substring(prefixLength)); } String[] temp = tempList.toArray(new String[0]);
核心问题就是你原来把列表的创建放在了循环里,每次循环都重置了列表,现在把列表创建移到循环外面,就能把所有元素都存进去啦。
内容的提问来源于stack exchange,提问作者amir dt
相关产品推荐
相关产品推荐

