Java 检查字符列表中的元素是否为字符串

Java 检查字符列表中的元素是否为字符串,java,Java,我正在尝试编写一些代码,对于给定的字符串和给定的字符列表(unicode字符,不同类型破折号的unicode,例如:{\u2011\u00AD\u2013}),它可以检查我的字符列表中是否有任何字符出现在该字符串的末尾(可能出现两次)并删除它,直到我没有空间或列表中的元素作为字符串的结束字符 我不知道如何在java中初始化字符列表(使用unicode),在网上找不到答案。 我想反转字符串并检查其中的每个字符。 我已经试过正则表达式了,但是速度太慢了 Input : foo oof ofo- O

我正在尝试编写一些代码,对于给定的字符串和给定的字符列表(unicode字符,不同类型破折号的unicode,例如:{\u2011\u00AD\u2013}),它可以检查我的字符列表中是否有任何字符出现在该字符串的末尾(可能出现两次)并删除它,直到我没有空间或列表中的元素作为字符串的结束字符

我不知道如何在java中初始化字符列表(使用unicode),在网上找不到答案。
我想反转字符串并检查其中的每个字符。
我已经试过正则表达式了,但是速度太慢了

Input : 
foo oof ofo-
Output : 
foo oof ofo-

您可以通过一个循环来完成,更新一个变量来跟踪您要删除的内容

Set<Character> charactersIWantToDelete = new HashSet<Character>(
    Arrays.asList('\u2011', '\u00AD', '\u2013', ' ')
    // whatever characters you want to delete
);
int newLen = string.length();
while (newLen > 0 && charactersIWantToDelete.contains(string.charAt(newLen-1)) {
    --newLen;
}
string = string.substring(0, newLen);
Set charactersIWantToDelete=新哈希集(
Arrays.asList('\u2011','\u00AD','\u2013','')
//您要删除的任何字符
);
int newLen=string.length();
while(newLen>0&&charactersIWantToDelete.contains(string.charAt(newLen-1)){
--纽伦;
}
string=string.substring(0,newLen);
Set<Character> charactersIWantToDelete = new HashSet<Character>(
    Arrays.asList('\u2011', '\u00AD', '\u2013', ' ')
    // whatever characters you want to delete
);
int newLen = string.length();
while (newLen > 0 && charactersIWantToDelete.contains(string.charAt(newLen-1)) {
    --newLen;
}
string = string.substring(0, newLen);