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

Java中如何提取点分隔字符串里entity关键词之后的特定子串

Java实现提取点分隔字符串中entity后第一个子串的方案

以下三种实现方式均适配你给出的示例场景,可根据实际业务场景选择:


方法1:split分割实现(易读易维护)

将字符串按.分割为数组,遍历找到entity对应下标后直接取下一个元素即可:

public class EntityExtractor {
    public static String extractTarget(String givenStr) {
        String[] splitArr = givenStr.split("\\.");
        for (int i = 0; i < splitArr.length; i++) {
            if ("entity".equals(splitArr[i]) && i + 1 < splitArr.length) {
                return splitArr[i + 1];
            }
        }
        // 无匹配时返回空串,可根据需求修改默认返回值
        return "";
    }

    public static void main(String[] args) {
        System.out.println(extractTarget("com.web.rit.entity.TestName.create")); // 输出TestName
        System.out.println(extractTarget("com.web.rit.entity.TestName2.update")); // 输出TestName2
    }
}

方法2:正则匹配实现(代码简洁)

通过正则直接匹配entity.后第一个不包含.的连续序列:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class EntityExtractor {
    // 预编译正则,多次调用时性能更高
    private static final Pattern ENTITY_PATTERN = Pattern.compile("entity\\.([^.]*)");

    public static String extractTarget(String givenStr) {
        Matcher matcher = ENTITY_PATTERN.matcher(givenStr);
        return matcher.find() ? matcher.group(1) : "";
    }

    public static void main(String[] args) {
        System.out.println(extractTarget("com.web.rit.entity.TestName.create")); // 输出TestName
        System.out.println(extractTarget("com.web.rit.entity.TestName2.update")); // 输出TestName2
    }
}

方法3:索引截取实现(性能最优)

直接通过字符串定位截取目标内容,无额外数组拆分开销,适合批量处理或超长字符串场景:

public class EntityExtractor {
    public static String extractTarget(String givenStr) {
        final String PREFIX = "entity.";
        int prefixPos = givenStr.indexOf(PREFIX);
        if (prefixPos == -1) {
            return "";
        }
        int startIndex = prefixPos + PREFIX.length();
        int endIndex = givenStr.indexOf('.', startIndex);
        return endIndex == -1 ? givenStr.substring(startIndex) : givenStr.substring(startIndex, endIndex);
    }

    public static void main(String[] args) {
        System.out.println(extractTarget("com.web.rit.entity.TestName.create")); // 输出TestName
        System.out.println(extractTarget("com.web.rit.entity.TestName2.update")); // 输出TestName2
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 22:54:00