从字符串中删除指定的字符

时间:2014-03-11 03:31:11

标签: java string character

在我的游戏文本渲染系统中,我实现了对彩色单词的支持。 所以,如果我想用红色的第一个单词和白色的其他单词来渲染一个句子,我可以这样做:

"|3Hello |1there Steven!"

当渲染字符串时,它会搜索|字符,然后查看后面的数字,该数字对应于某种颜色(3 =红色,1 =白色),然后它会为其他颜色着色那种颜色的字符串。

我希望能够移除|字符及其后的数字。

当它查看邮件并看到|3时,我希望它将颜色设置为红色,然后删除|3。如果我使用替换所有|后跟一个数字的方法,那么当涉及|1的部分时,它不会将颜色设置为白色,因为|1不在信息中了。

我该怎么做?

3 个答案:

答案 0 :(得分:2)

您可以使用以下正则表达式匹配|后跟一个或多个数字,然后替换为空字符串:

[|]\d+

这是 a sample 。这是一些测试代码:

String test = "|3Hello |1there Steven!";
String replaced = test.replaceAll("[|]\\d+", "");
System.out.println(replaced);

答案 1 :(得分:2)

|是一个特殊角色,所以你必须逃避它

这个怎么样? (假设'|'之后只有一个号码)

str=str.substring(0,str.indexOf("|")+2).replaceAll("[|]\\d+", "")+str.substring(str.indexOf("|")+2);

答案 2 :(得分:0)

您可以将输入文本拆分为“|”并检查第一个字符,假设您不期望使用任何其他|在你的文字中。不知道你想如何显示颜色,但这是一个使用html的例子:

public static void main(String[] args) {

    String[] TEXT_COLORS = { 
            "FF0000", // Red
            "FF7F00", // Orange
            "FFFF00", // Yellow
            "00FF00" // Green
            };

    String input = "|3Hello |1there Steven!";
    String[] coloredPhrases = StringUtils.split(input, "|");

    StringBuilder output = new StringBuilder();
    for (int i=0; i < coloredPhrases.length; i++) {
        String phrase = coloredPhrases[i];
        if (phrase.substring(0,1).matches("\\d")) {
            int colorIndex = Integer.parseInt(phrase.substring(0,1));
            output.append(String.format("<font color=#%s>%s</font>", TEXT_COLORS[colorIndex],phrase.substring(1)));
        } else {
            output.append(phrase);          
        }
    }

    System.out.print(output);
}