如何替换字符串

时间:2012-10-16 06:12:10

标签: java groovy

我有值的字符串:“我的名字[姓名],我的城市[cIty],我的国家[countrY] ..........”。

我想将方括号[<value in upper or lower case>]内的所有字符转换为[<value in lowercase>]

示例:[cIty]到[city]

如何在java或Groovy中使用更少的代码以高效的方式执行此操作?

编辑:我想只将方括号内的字符转换为小写而不是方括号外的其他字符。

5 个答案:

答案 0 :(得分:4)

以下是为您完成工作的Java代码:

String str = "My name [Name], My city [cIty], My country [countrY].";
Matcher m = Pattern.compile("\\[[^]]+\\]").matcher(str);
StringBuffer buf = new StringBuffer();
while (m.find()) {
   String lc = m.group().toLowerCase();
   m.appendReplacement(buf, lc);
}
m.appendTail(buf);
System.out.printf("Lowercase String is: %s%n", buf.toString());

<强>输出:

Lowercase String is: My name [name], My city [city], My country [country].

答案 1 :(得分:2)

较短的Groovy路线是:

def text = "My name [name], my city [cIty], my country [countrY]."
text = text.replaceAll( /\[[^\]]+\]/ ) { it.toLowerCase() }

答案 2 :(得分:1)

我不熟悉Groovy,但在Java中,您可以使用string.toLowerCase()

来实现

答案 3 :(得分:1)

这是一些应该做你想做的groovy代码:

def text = "My name [name], my city [cIty], my country [countrY]."
text.findAll(/\[(.*?)\]/).each{text = text.replace(it, it.toLowerCase())}

assert text == "My name [name], my city [city], my country [country]."    

答案 4 :(得分:0)

import java.util.regex.*;


public class test {

public static void main(String[] args) {
    String str = "My name [name], my city [cIty], my country [countrY]..........";
    System.out.println(str);

    Pattern pattern = Pattern.compile("\\[([^\\]]*)\\]");
    Matcher matcher = pattern.matcher(str);

    while (matcher.find()) {
      str = str.substring(0,matcher.start()) + matcher.group().toLowerCase() + str.substring(matcher.end());
    }
    System.out.println(str);
}

}