我试图翻转字符串中的每个希伯来字符集。假设我有这个字符串(而不是希伯来字母,我将使用符号):
§♀♠♪ this is my message♣♠♦►♣
(你可以告诉哪个字符是哪种语言)。
我希望这个字符集 - §♀♠♪
替换为♪♠♀§
。
但是,我希望将message♣♠♦►♣
替换为message♣►♦♠♣
,因此只有其中的英文单词才会保持不变。
我该怎么做? (是的,我知道我不能在常规字符串中使用这些符号,但这只是一个例子。)
答案 0 :(得分:1)
此解决方案基于OP提供的示例(具有♣♣♦►♣的示例),但未在实际数据上进行测试。
您应该能够通过\p{InHebrew}{2,}
找到两个或更多希伯来字符的序列。
当您找到它们时,您可以使用String#reverse
方法来反转它们。
最后一件事是使用appendReplacement
中的appentTail
和Matcher
创建包含更新匹配部分的新字符串。
这是一个应该做你想做的事情的例子
String yourString = ...;//place for your string
Pattern p = Pattern.compile("\\p{InHebrew}{2,}");
Matcher m = p.matcher(yourString);
StringBuffer sb = new StringBuffer();
while(m.find()){
m.appendReplacement(sb, new StringBuilder(m.group()).reverse().toString());
}
m.appendTail(sb);
String reversedSpecial = sb.toString();
System.out.println(reversedSpecial);
答案 1 :(得分:0)
假设有一个输出缓冲区保留最终字符串:遇到希伯来字符时,将其读入堆栈,直到找到英文字符,然后将堆栈中的所有字母弹出到输出缓冲区;英文字母直接移动到输出缓冲区。