替换字符串的前两个逗号

时间:2014-09-18 11:10:18

标签: java regex string

是否有正则表达式可用于仅用另一个字符替换String中的两个第一个逗号?

我需要这个的原因是我正在使用RDF三元组,我需要分别处理主题,谓词和对象。所以我使用String.split()方法将它们分成三个独立的部分。

这是我需要拆分的字符串示例:

[http://dbpedia.org/resource/Tom_Mathisenhttp://www.w3.org/2000/01/rdf-schema#comment,“Tom Mathisen(1952年8月14日出生)是挪威喜剧演员,演员,编剧和音乐家。他经常处理贝司,吉他和人声。他喜欢这部喜剧1976年至1983年与Jahn Teigen和Herodes Falsk一起创作Prima Vera。之后他继续与Herodes Falsk合作,参与许多电视/现场表演和唱片。“@ en]

例如,我希望这个String看起来像这样,所以我可以使用$:

进行拆分

[http://dbpedia.org/resource/Tom_Mathisen $ http://www.w3.org/2000/01/rdf-schema#comment $“Tom Mathisen(1952年8月14日出生)是挪威喜剧演员,演员,编剧和音乐家。他经常处理贝司,吉他和人声。他喜欢这部喜剧1976年至1983年与Jahn Teigen和Herodes Falsk一起创作Prima Vera。之后他继续与Herodes Falsk合作,参与许多电视/现场表演和唱片。“@ en]

我以不太优雅的方式做到了:

StringBuilder stringbuilder = new StringBuilder(str);
int commaCounter = 0;
for (int i = 0; i < stringbuilder.length(); i++) {
    if (stringbuilder.charAt(i) == ',') {
        stringbuilder.setCharAt(i, '$');
        commaCounter++;
        if (commaCounter == 2) {
            break;
        }
    }
}
str = stringbuilder.toString();

5 个答案:

答案 0 :(得分:6)

这样的事情比较直接吗?

String s = input.replaceFirst(",", "x").replaceFirst(",", "x");

答案 1 :(得分:3)

使用两次replaceFirst。这将做你想要的。如果要在前n次替换特定字符,请使用forloop。

    String s = "this, is, a, Test";
    int count = 2;
    for(int i = 0; i < count; i++)
        s = s.replaceFirst(",", "");
    System.out.println(s);

输出: this is a, Test

或者,如果您总是只想替换前两个字符,则可以链接方法。

   String s = "this, is, a, Test";
   s = s.replaceFirst(",", "$").replaceFirst(",", "$");

答案 2 :(得分:1)

如果您只想替换逗号,可以调用replaceFirst 2次。例如:

    String someString = "a, b, c, d";
    someString = someString.replaceFirst(",", "-");
    someString = someString.replaceFirst(",", "-");

    System.out.println(someString);

输出是:

    a- b- c, d

答案 3 :(得分:1)

您可以直接从第二个,分割文字,如下所示。要分拆,无需将,替换为$。从前两个,;

开始,这就是过度杀戮
String str="http://dbpedia.org/resource/Tom_Mathisen, http://www.w3.org/2000/01/rdf-schema#comment, \"Tom Mathisen (born 14 August 1952) is a Norwegian comedian, actor, screenwriter and musician. He usually handles bass, guitar and vocals. He was in the comedy group Prima Vera from 1976 to 1983 along with Jahn Teigen and Herodes Falsk. Later he continued to work with Herodes Falsk on many TV/scene shows and records.\"@en";
String[] arr=str.split(",",3);
 for (String i : arr) {
        System.out.println(i);
 }

Out put:

http://dbpedia.org/resource/Tom_Mathisen
http://www.w3.org/2000/01/rdf-schema#comment
"Tom Mathisen (born 14 August 1952) is a Norwegian comedian, actor, screenwriter and musician. He usually handles bass, guitar and vocals. He was in the comedy group Prima Vera from 1976 to 1983 along with Jahn Teigen and Herodes Falsk. Later he continued to work with Herodes Falsk on many TV/scene shows and records."@en

答案 4 :(得分:0)

基于正则表达式的解决方案,

System.out.println("a, b, c, d".replaceAll("^([^,]*),([^,]*),", "$1X$2X"));

输出:

aX bX c, d

DEMO