You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从含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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:13:13