gpt4 book ai didi

java - 如何删除所有前导和尾随标点符号?

转载 作者:搜寻专家 更新时间:2023-10-31 19:29:23 25 4
gpt4 key购买 nike

我想删除字符串中的所有前导和尾随标点符号。我该怎么做?

基本上,我想保留单词之间的标点符号,我需要删除所有开头和结尾的标点符号。

  1. ., @, _, &, /, - 如果被字母包围则允许或数字
  2. \' 如果前面有字母或数字则允许

我试过了

Pattern p = Pattern.compile("(^\\p{Punct})|(\\p{Punct}$)");
Matcher m = p.matcher(term);
boolean a = m.find();
if(a)
term=term.replaceAll("(^\\p{Punct})", "");

但是没用!!

最佳答案

好的。所以基本上你想在你的字符串中找到一些模式并在模式匹配时采取行动。

以天真的方式来做这件事会很乏味。天真的解决方案可能涉及类似

while(myString.StartsWith("." || "," || ";" || ...)
myString = myString.Substring(1);

如果你想做稍微复杂一点的任务,我提到的方法甚至可能是不可能的。

这就是我们使用正则表达式的原因。它是一种“语言”,您可以使用它来定义模式。如果字符串与该模式匹配,计算机将能够判断。要了解正则表达式,只需将其输入 google 即可。第一个链接:http://www.codeproject.com/Articles/9099/The-30-Minute-Regex-Tutorial

至于你的问题,你可以试试这个:

myString.replaceFirst("^[^a-zA-Z]+", "")

正则表达式的含义:

  • 第一个 ^ 表示在此模式中,接下来的内容必须位于字符串的开头。

  • [] 定义字符。在这种情况下,那些不是(第二个 ^)个字母 (a-zA-Z)。

  • +号表示它前面的东西可以重复并且仍然匹配正则表达式。

您可以使用类似的正则表达式来删除尾随字符。

myString.replaceAll("[^a-zA-Z]+$", "");

$ 表示“在字符串的末尾”

关于java - 如何删除所有前导和尾随标点符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12506655/

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