Java 字符串特殊字符替换

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/1107979/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-29 15:12:22  来源:igfitidea点击:

Java String Special character replacement

java

提问by Jon Skeet

I have string which contains alpahanumeric and special character. I need to replace each and every special char with some string.

我有包含字母数字和特殊字符的字符串。我需要用一些字符串替换每个特殊字符。

For eg,

例如,

Input string = "ja*va st&ri%n@&" Expected o/p = "jaasteriskvaspacestandripercentagenatand"

输入字符串 = "ja*va st&ri%n@&" 预期的 o/p = "jaasteriskvaspacestandripercentagenatand"

  • = "asterisk" & = "and" % = "percentage" @ = "at"
  • = "星号" & = "and" % = "百分比" @ = "at"

thanks,

谢谢,

回答by Jon Skeet

Unless you're absolutely desperate for performance, I'd use a very simple approach:

除非你对性能绝对绝望,否则我会使用一个非常简单的方法:

String result = input.replace("*", "asterisk")
                     .replace("%", "percentage")
                     .replace("@", "at"); // Add more to taste :)

(Note that there's a big difference between replaceand replaceAll- the latter takes a regular expression. It's easy to get the wrong one and see radically different effects!)

(请注意,replaceand之间有很大的不同replaceAll- 后者采用正则表达式。很容易弄错一个并看到完全不同的效果!)

An alternative would be something like:

另一种选择是:

public static String replaceSpecial(String input)
{
    // Output will be at least as long as input
    StringBuilder builder = new StringBuilder(input.length());

    for (int i = 0; i < input.length(); i++)
    {
        char c = input.charAt(i);
        switch (c)
        {
            case '*': builder.append("asterisk"); break;
            case '%': builder.append("percentage"); break;
            case '@': builder.append("at"); break;
            default: builder.append(c); break;
        }
    }
    return builder.toString();

回答by Brandon E Taylor

Take a look at the following java.lang.String methods:

看看下面的 java.lang.String 方法: