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

如何判断字符串中句号(.)与方括号([)哪个最先出现?

优化判断字符串中句号与方括号出现顺序的Java实现

你的代码能实现基础判断,但存在冗余遍历和边界场景缺失的问题,以下是更简洁高效的优化方案:

原代码的问题点

  • 重复调用contains和indexOf:每个字符需要遍历两次字符串,浪费性能
  • 初始值设置不合理:用0初始化索引,若其中一个字符不存在,会触发错误的判断逻辑
  • 未处理边界场景:仅覆盖了两种字符都存在的情况,没考虑仅存在一种、两种都不存在的情况

优化后的代码

public static void main(String[] args) {
    String str = "timedLeg[0].service.carriers[0].ref";
    checkString(str);
}

private static void checkString(String str) {
    int bracketIndex = str.indexOf('[');
    int periodIndex = str.indexOf('.');

    // 两种字符都存在,比较出现顺序
    if (bracketIndex != -1 && periodIndex != -1) {
        System.out.println(periodIndex < bracketIndex ? "句号先出现" : "方括号先出现");
    } 
    // 仅存在句号
    else if (periodIndex != -1) {
        System.out.println("仅存在句号");
    } 
    // 仅存在方括号
    else if (bracketIndex != -1) {
        System.out.println("仅存在方括号");
    } 
    // 两种字符都不存在
    else {
        System.out.println("字符串中既没有句号也没有方括号");
    }
}

优化说明

  • 减少字符串遍历:直接用indexOf的返回值判断字符是否存在(返回-1表示不存在),避免了contains的额外遍历,每个字符只需要遍历一次字符串
  • 修正索引初始值:用-1表示未找到字符的状态,逻辑判断更准确
  • 覆盖所有场景:补充了仅存在一种字符、两种都不存在的处理,逻辑更完整
  • 简化代码逻辑:使用三目运算符简化顺序判断,分支结构更清晰易读

内容的提问来源于stack exchange,提问作者Piya

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 21:30:00