如何删除所有前导和尾随标点符号?
我想删除字符串中的所有前导和尾随标点符号。 我怎样才能做到这一点?
基本上,我想在单词之间保留标点符号,我需要删除所有前导和尾随标点符号。
.
,@
,_
,&
,/
,-
如果被字母或数字包围,则允许使用- 如果前面有字母或数字,则允许使用
\'
我试过了
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")