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

我想删除字符串中的所有前导和尾随标点符号。 我怎样才能做到这一点?

基本上,我想在单词之间保留标点符号,我需要删除所有前导和尾随标点符号。

  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})", ""); 

但它不起作用!!

好。 所以基本上你想在你的字符串中找到一些模式,并且如果模式匹配则表现。

这样做的方式是乏味的。 naiive解决方案可能涉及到类似的东西

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

如果你想做一个更复杂的任务,甚至不可能按照我提到的方式去做。

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

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

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

正则表达式的含义:

  • 第一个^意味着在这个模式中,接下来必须在字符串的开头。

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

  • +符号意味着它之前的东西可以重复并仍然匹配正则表达式。

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

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

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

在模式上使用本教程。 你必须创建一个正则表达式匹配字符串开头的字母或数字,并以字母或数字结尾,并做inputString.matches("regex")