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

Java 从字符串中删除指定的字符,java,string,character,Java,String,Character,在我的游戏文本呈现系统中,我实现了对彩色单词的支持。 所以,如果我想让一个句子的第一个单词是红色的,其他单词是白色的,我可以这样做: “你好,史蒂文!” 当呈现字符串时,它会搜索一个|字符,然后查看对应于特定颜色的数字(3=红色,1=白色),然后用该颜色为字符串的其余部分着色 我希望能够删除|字符及其后面的数字 当它查看消息并看到|3时,我希望它将颜色设置为红色,然后删除|3。如果我使用一种方法,将所有的替换为后跟一个数字,当涉及到带有|1的部分时,它不会将颜色设置为白色,因为|1不再出现在消息

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

“你好,史蒂文!”

当呈现字符串时,它会搜索一个
|
字符,然后查看对应于特定颜色的数字(3=红色,1=白色),然后用该颜色为字符串的其余部分着色

我希望能够删除
|
字符及其后面的数字

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


如何执行此操作?

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

[|]\d+
这里是。下面是一些测试代码:

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

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

[|]\d+
这里是。下面是一些测试代码:

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

|
是一个特殊字符,因此必须对其进行转义

这个怎么样?(假设
“|”
后面只有一个数字)


|
是一个特殊字符,因此必须对其进行转义

这个怎么样?(假设
“|”
后面只有一个数字)


您可以将输入文本拆分为“|”,并检查第一个字符,前提是您不希望在文本中使用任何其他|。不确定如何显示颜色,但下面是一个使用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);
}
publicstaticvoidmain(字符串[]args){
字符串[]文本颜色={
“FF0000”,//红色
“FF7F00”,//橙色
“FFFF00”,//黄色
“00FF00”//绿色
};
字符串输入=“|3Hello | 1there Steven!”;
String[]coloredPhrases=StringUtils.split(输入“|”);
StringBuilder输出=新的StringBuilder();
for(int i=0;i
您可以将输入文本拆分为“|”并检查第一个字符,前提是您不希望在文本中使用任何其他字符。不确定如何显示颜色,但下面是一个使用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);
}
publicstaticvoidmain(字符串[]args){
字符串[]文本颜色={
“FF0000”,//红色
“FF7F00”,//橙色
“FFFF00”,//黄色
“00FF00”//绿色
};
字符串输入=“|3Hello | 1there Steven!”;
String[]coloredPhrases=StringUtils.split(输入“|”);
StringBuilder输出=新的StringBuilder();
for(int i=0;i
这里有一个关于如何在Java中使用正则表达式(regex)的链接:感谢您的帮助,尽管这不是我想要的,但我非常感谢您的帮助。:)+1这里有一个关于如何在Java中使用正则表达式(regex)的链接:感谢您的帮助,尽管这不是我想要的,但我感谢您的帮助。:)+1这难道不能取代所有这些吗?如问题中所述,我不能这样做。它只替换以数字开头的
。如果你有另一个史蒂文,然后是
str=str.replaceAll(“[\\\\\;]+[0-9]”,“”)给你
你好,史蒂文我理解,但是,我的意思是,我想让它看到
|3
,处理它,然后只替换
|3
,因为如果它也替换
|1
,那么当它到达它时,它就不能处理它。好吧,现在我不明白了。你只想替换第一个出现的
[\\\\\;]+[0-9]
?我知道,这很难理解。我将编辑我的问题来解释它。这不会取代所有问题吗?如问题中所述,我不能这样做。它只替换以数字开头的
。如果你有另一个史蒂文
,然后是
str=str.replaceAll(“[\\\\\;]+[0-9]”,“”)给你
你好,史蒂文我理解,但是,我的意思是,我想让它看到
|3
,处理它,然后只替换
|3
,因为如果它也替换
|1
,那么当它到达它时,它就不能处理它。好吧,现在我不明白了。你只想替换第一个出现的
[\\\\\;]+[0-9]
?我知道,这很难理解。我将编辑我的问题来解释它。