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
相关产品推荐
相关产品推荐

