java输出字符的索引号_java – 在字符串中查找标点符号,然后查找其索引以执行子字符串...

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

从Taltz 80毫克自动注射器我需要提取Taltz或从0.75毫克Trulicity,每周我需要提取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;,:.?]+).*");

(相同输出)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值