Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何删除java中的特定字符?_Java_Regex_Replaceall - Fatal编程技术网

如何删除java中的特定字符?

如何删除java中的特定字符?,java,regex,replaceall,Java,Regex,Replaceall,我是Java初学者,理解正则表达式的工作原理仍然非常复杂。我不知道如何创建正则表达式来检查和删除字符串中的一些特定字符 “!@$%&*(),.:?/”(我需要检查并从字符串中删除它) 提前谢谢我不知道这是否是一个好的做法,但它正在起作用 private String check(String answer) { return answer.replaceAll("[!@#$%¨&*()_\\-+={\\[}\\]º|\\\\,.:;?/°]", ""); } String an

我是Java初学者,理解正则表达式的工作原理仍然非常复杂。我不知道如何创建正则表达式来检查和删除字符串中的一些特定字符

“!@$%&*(),.:?/”(我需要检查并从字符串中删除它)


提前谢谢

我不知道这是否是一个好的做法,但它正在起作用

private String check(String answer) {
    return answer.replaceAll("[!@#$%¨&*()_\\-+={\\[}\\]º|\\\\,.:;?/°]", "");
}

String answer = "Lore!m ips@um dol$or si%t amet, co¨nsectetur adi&piscing el*it. Mo(rbi pla)cerat, tu_rpis s_it am+et acc=umsan ve{nenatis, ma[gna r}isus ulla]mcorper an|te, ne\\c por,ttitor lac.us n:unc se;d el?it. Nul/la tristi°que posºuere felis, in ullamcorper sapien dignissim sit amet.";

Log.i("ans", check(answer));

Lorem ipsum dolor sit amet consectetur adipiscing elit Morbi placerat turpis 
sit amet accumsan venenatis magna risus ullamcorper ante nec porttitor lacus 
nunc sed elit Nulla tristique posuere felis in ullamcorper sapien dignissim 
sit amet

您可以使用正则表达式删除所有标点(
\p{p}
)和符号(
\p{S}
)以及
符号:

String result = s.replaceAll("[\\p{S}\\p{P}º]+", "");
或者使用
\p{Punct}
()

见a:

输出:

Lorem ipsum dolor sit amet consectetur adipiscing elit Morbi placerat turpis sit amet accumsan venenatis magna risus ullamcorper ante nec porttitor lacus nunc sed elit Nulla tristique posuere felis in ullamcorper sapien dignissim sit amet

也许这就是你真正想要的?我看了这个,但我的字符串将包含亚洲语言值,它不会有aA zZ..谢谢@ScaryWombatI我投票结束这个问题,因为这不是一个正则表达式编写服务。这里有一些现有的问题,比如,应该给你一个开始的地方。(如果您需要针对其他字符对其进行调整,您可以尝试这样做,然后就执行此操作时遇到的任何问题询问特定的问题。)好的,抱歉。但我的字符串将没有a-z。字母将有亚洲字符。这就是我需要此字符的原因。@KenWhite如果您使用的是窄字符(utf-16)目标,您不能只转储类中的所有字符。这是因为它们可能包含代理项,这在混合类中是禁止的。如果您知道没有任何代理项(补充平面),您可以只转储类中的字符。或者,您可以使用\uxxx表示法。
[\u0021-\u0026\u0028-\u002F\u003A-\u003B\u003D\u003F-\u0040\u005B-\u005D\u005F\u007B-\u007D\u00A8\u00B0\u00BA]
如果有人需要,我找到了一个很好的参考资料。我应该说这是书上写的。我不希望有其他的解决办法。很好!@F4bioo:用正则表达式删除所有标点和符号+那
怎么样(“[\\p{S}\\p{p}º]+”,”)
?非常感谢,它很短,效果也很好。@WiktorStribiżewI作为答案发布。
import java.util.*;
import java.lang.*;
import java.io.*;

class Ideone
{
    public static void main (String[] args) throws java.lang.Exception
    {
        String answer = "Lore!m ips@um dol$or si%t amet, co¨nsectetur adi&piscing el*it. Mo(rbi pla)cerat, tu_rpis s_it am+et acc=umsan ve{nenatis, ma[gna r}isus ulla]mcorper an|te, ne\\c por,ttitor lac.us n:unc se;d el?it. Nul/la tristi°que posºuere felis, in ullamcorper sapien dignissim sit amet.";
        System.out.println(check(answer));
    }
    private static String check(String answer) {
        return answer.replaceAll("[\\p{S}\\p{P}º]+", "");
    }
}
Lorem ipsum dolor sit amet consectetur adipiscing elit Morbi placerat turpis sit amet accumsan venenatis magna risus ullamcorper ante nec porttitor lacus nunc sed elit Nulla tristique posuere felis in ullamcorper sapien dignissim sit amet