gpt4 book ai didi

java - 在java中提取特定字符串

转载 作者:行者123 更新时间:2023-11-30 09:13:48 24 4
gpt4 key购买 nike

我正在尝试从字符串中提取特定字符。我试过使用拆分和替换来获取数据。但是还有其他选择可以提取吗?以下为输入字符串

  Input1-    
q={!tag=tagForType}(Type:(ABC))

Input2-
q={!tag=tagForType}(Type:(ABC OR XYZ))

需要以列表格式输出。

  Output1-  List1{ABC}
Output2- List1{ABC ,XYZ)

以下是我尝试提取此类数据的代码

 if (s.contains("Type")) {                               
List = s.split("Type:\\(");
String s1 = List[1].replaceAll("\\W", "");
List1 = s1.split("OR");
}

还有其他选择吗?

最佳答案

使用正则表达式查看此解决方案。

    String input = "q={!tag=tagForType}(Type:(ABC OR XyZ OR ORT))(Type:(ABC))";
Pattern findType = Pattern.compile("Type:(\\([ \\w]+\\))");
Pattern extractLists = Pattern.compile("(\\(| OR )([\\w]+)");
Matcher typeMatcher = findType.matcher(input);
while (typeMatcher.find()) {
System.out.println(typeMatcher.group(1));

Matcher listMatcher = extractLists.matcher(typeMatcher.group(1));
while (listMatcher.find()) {
System.out.println(listMatcher.group(2));
}
}

这将打印以下内容:

(ABC OR XYZ OR ORT)
ABC
XyZ
ORT
(ABC)
ABC

当然,您可能需要对这些组执行其他操作,我目前只是将它们打印出来。

请注意,我在这里演示了此解决方案如何在同一字符串中使用多个 Type:,我认为您的解决方案无法处理。

目前我还假设各部分之间的间隔量是固定的,但如果使用正则表达式也可以解决这个问题。

关于java - 在java中提取特定字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20879368/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com