Java 如果字符集是尾随字符,请删除它们
我试图从字符串中删除以下字符集,如果其中任何一个是尾随字符 删除结尾“'”、“-”、“-”、“'s”、“ly”、“ed”、“ing”、“ness”、“”、“”、“;”, “?”、“!”、“、”、“:” 我在做以下事情Java 如果字符集是尾随字符,请删除它们,java,regex,Java,Regex,我试图从字符串中删除以下字符集,如果其中任何一个是尾随字符 删除结尾“'”、“-”、“-”、“'s”、“ly”、“ed”、“ing”、“ness”、“”、“”、“;”, “?”、“!”、“、”、“:” 我在做以下事情 value.replaceAll("(ly|!|\\?|')+$",""); 但是如果字符串是这个!可爱的?!嗨!?'它给了我!可爱的?!嗨 我原以为会是!可爱?!嗨!? 我非常感谢您的帮助。如果字符串以您的选项结尾或不是下面的选项结尾,请首先进行匹配- if (value.en
value.replaceAll("(ly|!|\\?|')+$","");
但是如果字符串是这个!可爱的?!嗨!?'
它给了我!可爱的?!嗨
我原以为会是!可爱?!嗨!?
我非常感谢您的帮助。如果字符串以您的选项结尾或不是下面的选项结尾,请首先进行匹配-
if (value.endsWith("\'") || value.endsWith("--") || value.endsWith("-"))
等等你的选择
然后从这个字符串中删除最后一个字符,如果只是这样-
value = value.substring(0, value.length()-1);
检查下面的示例代码以更好地理解-
String value = "!lovely?! hi!?'";
if (value.endsWith("\'") || value.endsWith("--") || value.endsWith("-")) {
value = value.substring(0, value.length()-1);
}
System.out.println(value);
如果要使用Java正则表达式进行比较,请以这种方式使用-
if(value.matches(".*[' -- - ly ]$"))
//provide only one character String that you want to check and remove
if (value.matches(".*[' - ?]$")){
value = value.substring(0, value.length()-1);
}
//provide two character String that you want to check and remove
if (value.matches(".*[-- ly ab cd ef]$")){
value = value.substring(0, value.length()-2);
}
//provide three character String that you want to check and remove
if (value.matches(".*[-- lyy abc def ghi]$")){
value = value.substring(0, value.length()-3);
}
//provide four character String that you want to check and remove
if (value.matches(".*[-- lyyy abcd efgh ijkl]$")){
value = value.substring(0, value.length()-4);
}
使用此模式:
var patt = ([-?]|(ing|--|ly|ness|ed))(?=\s);
var result = str.replace(patt,"");
注意:您必须在patt中添加其他选项。您将分组
(…)
(或者甚至是非捕获分组(?:…)
)与字符类[…]
值混为一谈。replaceAll((ly |!| \?|')+$,“;
应该可以工作。(注意,还需要将问号转义为\?
,因为它在正则表达式中具有特殊意义。)。此外,如果您不想删除多个后缀,+
是额外的。您对replaceAll
的调用不包括您提到的所有结尾。此外,您似乎想从结尾删除结尾,只要找到新的标记,就继续这样做。这听起来像是解析器的工作。@Amadan我试过您的建议手势和编辑问题+
表示“重复1次或更多次”。如果您只想去掉一个后缀,请删除+
。对于整个字符集来说,这不是太多条件吗?使用正则表达式可以吗?@user2769614-是的,我只尝试一个。给我几分钟。@user2769614-请参阅JAVA正则表达式的编辑。您想比较字符串末尾和abov中的多个字符吗e代码我只删除最后一个字符。请记住这一点。@user2769614这是不正确的。您正在查看整个字符串是否匹配。如果匹配,则从值的最后一位删除。@newuserua_ext-请参阅最后四个If语句,我专门比较并删除了一个、两个、三个和四个字符很好。