gpt4 book ai didi

java - 从 Java 中的字符串中删除前导尾随非数字字符

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

我需要分别从字符串中去除所有前导和尾随字符,直至第一个和最后一个数字。

示例:OBC9187A-1%A
应该返回:9187A-1

我如何在 Java 中实现这一点?

我知道正则表达式是解决方案,但我并不擅长。
我试过这个 replaceAll("([^0-9.*0-9])","")
但它只返回数字并去除所有字母/特殊字符。

最佳答案

这是一个使用 regexjava 来解决您的问题的独立示例。我建议查看某种正则表达式教程 here是一个不错的。

public static void main(String[] args) throws FileNotFoundException {
String test = "OBC9187A-1%A";
Pattern p = Pattern.compile("\\d.*\\d");
Matcher m = p.matcher(test);

while (m.find()) {
System.out.println("Match: " + m.group());
}
}

输出:

Match: 9187A-1

\d 匹配任何数字 。* 匹配任何数字 0 次或多次 \d 匹配任何数字。我们使用 \\d 的原因是为了转义 Java\ 因为 \ 是一个特殊字符。 .所以这个正则表达式将匹配一个数字,然后是任何东西,然后是另一个数字。这是贪婪的,所以它将采用最长/最大/最贪婪的匹配,因此它将获得第一个和最后一个数字以及介于两者之间的任何数字。 while 循环之所以存在,是因为如果有超过 1 个匹配项,它将遍历所有匹配项。在这种情况下,只能有 1 个匹配项,因此您可以离开 while 循环或更改为 if,如下所示:

if(m.find()) 
{
System.out.println("Match: " + m.group());
}

关于java - 从 Java 中的字符串中删除前导尾随非数字字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31326784/

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