检查char列表中的元素是否在字符串中

时间:2019-05-24 08:14:53

标签: java

我正在尝试为给定的字符串和给定的chars列表(unicode chars,unicode用于不同种类的破折号,例如{\ u2011,\ u00AD,\ u2013})编写一些代码,它可以检查是否我的字符列表中的所有字符都出现在该字符串的末尾(可能出现两次),然后删除它,直到我没有空格或列表中的元素作为字符串的结尾字符为止。

我不知道如何在Java中初始化字符列表(使用unicode),也无法在网上找到答案。
我虽然反转了字符串,然后从那里检查每个字符。
我已经尝试过 regex ,但是它太慢了。

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

1 个答案:

答案 0 :(得分:1)

您可以循环执行,更新变量以跟踪要删除的内容。

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);