2016-10-14 1 views
1

キャリングケースの文字列をJavaのアンダースコアに変換するにはどうすればよいでしょうか?私はこのコードをusinよ:JavaでcamelCase文字列をアンダースコアに変換するにはどうすればよいですか?

String inputString = "Hi How areYouToday"; 
String result = inputString.replaceAll("([a-z])([A-Z]+)", "$1_$2"); 

私はHi How are_You_TodayでinputStringからを変換することができますが、私はHi How are_you_todayを取得する必要があります。

変換された部分だけが小文字に変更されていることに注意してください。あなたはMatcher#appendReplacementを使用して、正規表現によって発見された内容に基づいて動的置換を渡すことができストリングまたは分割()と使用を使用して2にinputStringから

答えて

7

上のすべてを置き換えます。

正規表現を少し変更して、小文字の部分をマッチに含めず、小文字の前にある大文字のみを受け入れるようにしました。詳細情報:http://www.regular-expressions.info/lookaround.html

String text = "Hi How areYouToday"; 
Matcher m = Pattern.compile("(?<=[a-z])[A-Z]").matcher(text); 

StringBuffer sb = new StringBuffer(); 
while (m.find()) { 
    m.appendReplacement(sb, "_"+m.group().toLowerCase()); 
} 
m.appendTail(sb); 

System.out.println(sb.toString()); //Hi How are_you_today 
+0

ありがとうございます!出来た! –

+0

UpperCameCaseを 'AreYouToday'から' are_you_today'のようなアンダースコアスタイルに変更したいのですが? – sajjadG

+0

@sajjadGもし「Hi How areYouToday」;「Hi」と「How」も「hi」と「how」に減らす必要がありますか? – Pshemo

関連する問題