我有一个正则表达式模式:
'/(?:&#\d{2,4};)|(\d+[\.\d]*)|(?:[a-z](?:[\x00-\x3B\x3D-\x7F]|<\s*[^>]+>)*)|<\s*[^>]+>/i'
我想在任何字符串中用array2替换array1,如何使用此正则表达式将array1元素替换为array2元素?
String[] array1 = String[] {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"};
String[] array2 = String[] {"۰", "۱", "۲", "۳", "۴", "۵", "۶", "۷", "۸", "۹"};
答案 0 :(得分:2)
嗯,你不需要使用正则表达式,或类似的东西。您甚至不需要使用任何特殊功能。
String[] array1 = String[] {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"};
好好看看这个数组。为方便起见,0
的索引为0
,1
的索引为1
等。
所以你可以这样做,(伪代码):
foreach(char in stringToBeReplaced)
{
if(char == an ASCII digit)
{
char = array2[array1.findIndexOf(char)];
}
}
就是这样。我会把细节留给你。
答案 1 :(得分:0)
好像你想把波斯语翻译成英文......
正则表达式不是最好的解决方案。 看看这个问题:Convert String to another locale in java
public static void main(String... args) {
System.out.println(arabicToDecimal("۴۲"));
}
private static final String arabic = "\u06f0\u06f1\u06f2\u06f3\u06f4\u06f5\u06f6\u06f7\u06f8\u06f9";
private static String arabicToDecimal(String number) {
char[] chars = new char[number.length()];
for(int i=0;i<number.length();i++) {
char ch = number.charAt(i);
int index = arabic.indexOf(ch);
if (index >= 0)
ch = (char) (index + '0');
chars[i] = ch;
}
return new String(chars);
}