Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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_Arrays_String - Fatal编程技术网

Java字符串。用其他字符列表替换字符列表

Java字符串。用其他字符列表替换字符列表,java,arrays,string,Java,Arrays,String,我有一个值为-f.e的字符串变量: 这是test-str-ingłóśżć徖 我想替换这个字符: ,-,ł,ś,ż,ż,ż, 其中: ,,l,o,s,z,c,n 这里我的意思是,如果解析器将发现f.e.:char-(在第一个列表中是第二个)应该被替换为在第二个列表中处于相同位置/位置的char,在本例中是:\uu charo应替换为charo 字符n应替换为字符n 在我的例子中,要替换的字符列表相当长,在循环中对每个要替换的字符进行解析效率不高 我知道方法replaceAll()。但它只接受一个

我有一个值为-f.e的字符串变量:
这是test-str-ingłóśżć徖

我想替换这个字符:

-
ł
ś
ż
ż
ż

其中:

l
o
s
z
c
n

这里我的意思是,如果解析器将发现f.e.:char
-
(在第一个列表中是第二个)应该被替换为在第二个列表中处于相同位置/位置的char,在本例中是:
\uu

char
o
应替换为char
o

字符
n
应替换为字符
n

在我的例子中,要替换的字符列表相当长,在循环中对每个要替换的字符进行解析效率不高

我知道方法
replaceAll()
。但它只接受一个in字符串和一个out字符串

所以我正在寻找一种方法,它允许我处理数组/字符串列表,而不是单个字符串

请给我一些帮助。

char[]out=new char[src.length();
    char[] out = new char[src.length()];
    for( j ...){
    inputChar = src.charAt(j);
    for (int i = 0; i < convertChars.length; i++) {
       if (inputChar == convertChars[i]) {
         inputChar = toChars[i];
       }
     }
    }
     out[j] = inputChar ;
   }
    out2 = new String(out);
对于(j…){ inputChar=src.charAt(j); for(int i=0;i
从没有IDE的较大代码中提取,未经测试。循环(我希望)不会分配对象,也不会降低速度。

char[]out=new char[src.length();
对于(j…){
inputChar=src.charAt(j);
for(int i=0;i

从没有IDE的较大代码中提取,未经测试。循环(我希望)不会分配对象,也不会降低速度。

使用
java.text.Normalizer
将重音字母分解为基本字母加上“组合变音符号”

这将执行分解(D)规范化,然后删除标记


仍然需要一些替换。

使用
java.text.Normalizer
将重音字母分解为基本字母加上“组合变音符号”

这将执行分解(D)规范化,然后删除标记


仍然需要一些替换项。

创建一个静态查找表:

private static char[] substitutions = new char[65536];
static {
    // Initialize
    for (char c = 0; c < substitutions.length; c++) {
        substitutions[c] = c;
    }
    // Now add mappings.
    substitions['-'] = '_'; // Map source->target character
    ... // Add the rest
}
// LATER IN Code
char[] stringChars = inputString.toCharArray();
for (int i = 0; i < stringChars.length; i++) {
    stringChars[i] = substitutions[stringChars[i]];
}
outputString = new String(stringChars);
private static char[]substitutions=new char[65536];
静止的{
//初始化
for(字符c=0;c目标字符
…//把其余的加起来
}
//以后的代码
char[]stringChars=inputString.tocharray();
对于(int i=0;i
创建一个静态查找表:

private static char[] substitutions = new char[65536];
static {
    // Initialize
    for (char c = 0; c < substitutions.length; c++) {
        substitutions[c] = c;
    }
    // Now add mappings.
    substitions['-'] = '_'; // Map source->target character
    ... // Add the rest
}
// LATER IN Code
char[] stringChars = inputString.toCharArray();
for (int i = 0; i < stringChars.length; i++) {
    stringChars[i] = substitutions[stringChars[i]];
}
outputString = new String(stringChars);
private static char[]substitutions=new char[65536];
静止的{
//初始化
for(字符c=0;c目标字符
…//把其余的加起来
}
//以后的代码
char[]stringChars=inputString.tocharray();
对于(int i=0;i
我建议您尝试一下ApacheCommonsLang&
StringUtils
replaceAll是重磅(regex)。fast是replace(),只有少量变体。professional似乎使用CharsetProvider和family实现“代码页”操作。我看到了一些关于古代波兰852页,马佐维亚和转换器的东西。你想做什么?看看dasblinkenlight链接的问题。我有一种强烈的感觉,那就是你想要的。添加对
replaceAll
的第二个调用,并用下划线替换空格、减号等。我建议您尝试一下apache commons lang&
StringUtils
replaceAll是重载(regex)。fast是replace(),只有少量变体。professional似乎使用CharsetProvider和family实现“代码页”操作。我看到了一些关于古代波兰852页,马佐维亚和转换器的东西。你想做什么?看看dasblinkenlight链接的问题。我有一种强烈的感觉,那就是你想要的。添加对
replaceAll
的第二个调用,并用下划线替换空格、减号等。确定。我会试试看,因为这似乎是最优雅的提议。它不会将
ł
转换为
l
,并且仍然需要将
空格
更改为
我添加了一些额外的
replaceAll
来实现我的目标:
返回规范化器。规范化(stringToConvert,Form.NFKD)。replaceAll(\\p{M},“”)。replaceAll(“,”,“).replaceAll”(“,“,”).replaceAll”(“l”)。现在它起作用了。谢谢。在没有正则表达式开销的情况下执行
.replace(“ł”,“l”)
甚至
.replace('''.'''.'
)就足够了。字符串替换比正则表达式替换快,字符替换比字符串替换快,因为新的字符串长度提前知道。好的。我会试试看,因为这似乎是最优雅的提议。它不会将
ł
转换为
l
,并且仍然需要将
空格
更改为
我添加了一些额外的
replaceAll
来实现我的目标:
返回规范化器。规范化(stringToConvert,Form.NFKD)。replaceAll(\\p{M},“”)。replaceAll(“,”,“).replaceAll”(“,“,”).replaceAll”(“l”)。现在它起作用了。谢谢。在没有正则表达式开销的情况下执行
.replace(“ł”,“l”)
甚至
.replace('''.'''.
)就足够了。字符串替换比