gpt4 book ai didi

java - 在字符串中寻找标点符号,然后找到它们的索引来做一个子串

转载 作者:搜寻专家 更新时间:2023-11-01 03:32:48 24 4
gpt4 key购买 nike

我有一些字符串,我需要根据第一次出现的标点符号或第一次出现的数字从中提取一个子字符串。例如

Taltz 80mg autoinjector 我需要提取 Taltz 或者从 Trulicity 0.75mg, weekly 我需要提取 Trulicity

这是我的代码:

 char [] punctuations = {'.' , ',' , ';' , ':','"' , '\'' ,'/', ')' , '('};

String value = "Taltz, 80mg autoinjector";
int pos = value.replaceFirst("^(\\D+).*$", "$1").length();

for(int j = 0; j < value.length(); j++) {
for (int k = 0; k < punctuations.length;k++){
if(value.charAt(j) == punctuations[k]){
value = value.substring(0,value.indexOf(punctuations[k]));
break;
}
}
}

if(value.matches(".*\\d+.*")){
value = value.substring(0, pos);
}

System.out.println(value);


}

有没有更有效的方法来做到这一点?

最佳答案

您可以定义要保留的部分并使用正则表达式捕获它:

String s = "Taltz test 80mg autoinjector";
Pattern pattern = Pattern.compile("([a-zA-Z ]+).*");
Matcher matcher = pattern.matcher(s);

if(matcher.matches()) {
System.out.println("matches : " + matcher.group(1).trim());
} else {
System.out.println("Does not match");
}

输出:

Taltz test

您还可以使用以下正则表达式捕获“既不是标点符号也不是数字”的所有内容:

Pattern pattern = Pattern.compile("([^0-9;,:.?]+).*");

(相同的输出)

关于java - 在字符串中寻找标点符号,然后找到它们的索引来做一个子串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44245725/

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