0

「私の名前[名前]、私の都市[cIty]、私の国[countrY]..........」という値の文字列があります。

[<value in upper or lower case>]角かっこ内のすべての文字をに変換したいと思います[<value in lowercase>]

例:[cIty]から[city]

javaまたはGroovyのコードを減らして効率的な方法でこれを行う方法は?

編集:角括弧内の文字のみを小文字に変換し、角括弧外の他の文字は変換したくない。

4

5 に答える 5

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].
于 2012-10-16T06:24:51.467 に答える
2

短いGroovyルートは次のとおりです。

def text = "My name [name], my city [cIty], my country [countrY]."
text = text.replaceAll( /\[[^\]]+\]/ ) { it.toLowerCase() }
于 2012-10-17T10:53:31.830 に答える
1

Groovyに精通していませんが、Javaでは、string.toLowerCase()

于 2012-10-16T06:17:11.230 に答える
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]."    
于 2012-10-16T06:36:56.767 に答える
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);
}

}
于 2012-10-16T06:53:32.883 に答える