Java は、正規表現での前処理操作をサポートしていません。Java で欠落しているこの機能を回避するにはどうすればよいですか?
このGNU sedコマンドと同じことを行うメソッドを Java で実装したいと思います。
$ sed 's/\(^\|_\)\([a-z]\)/\U\2/g' <<< first_name
FirstName
sed 呼び出しはキャメル ケースを生成します。
Java は、正規表現での前処理操作をサポートしていません。Java で欠落しているこの機能を回避するにはどうすればよいですか?
このGNU sedコマンドと同じことを行うメソッドを Java で実装したいと思います。
$ sed 's/\(^\|_\)\([a-z]\)/\U\2/g' <<< first_name
FirstName
sed 呼び出しはキャメル ケースを生成します。
古い学校の文字列操作を単純に使用してみませんか?
String myStr = "first_name";
myStr = myStr.replace("_", " ");
myStr = StrUtils.Capitalize(myStr);
myStr = mystr.replace(" ", "");
StrUtils はhttp://commons.apache.org/lang/からのものです。
StrUtils を追加したくない場合は、Word を分割し、最初の文字を置き換えます。単純に、小文字と大文字の ASCII の違い (32 だと思います) を char に追加します。(または大文字機能など...)
試してみると
public static void main(String[] args) {
System.out.println(toTitleCase("first_name"));
System.out.println(toTitleCase("UPPER_CASE"));
System.out.println(toTitleCase("ßßß_ßßß_dždždž"));
}
public static String toTitleCase(String s) {
StringBuilder sb = new StringBuilder();
for (String word : s.split("_+")) {
sb.append(word.substring(0,1).toUpperCase());
sb.append(word.substring(1).toLowerCase());
}
return sb.toString();
}
版画
FirstName
UpperCase
SSßßSSßßDŽdždž
私は今これを使用します:
class camelcase
{
public static void capitalize (String str, StringBuilder builder)
{
int length = str.length();
if (length > 0) {
builder.append (Character.toTitleCase(str.charAt(0)));
if (length > 1)
builder.append (str.substring(1).toLowerCase());
}
}
public static String capitalize (String str)
{
StringBuilder builder = new StringBuilder();
capitalize (str, builder);
return builder.toString();
}
public static void camelcase (String str, StringBuilder builder)
{
for (String word : str.split("[ \\p{Punct}]+"))
capitalize (word, builder);
}
public static String camelcase (String str)
{
StringBuilder builder = new StringBuilder();
camelcase (str, builder);
return builder.toString();
}
public static void main (String[] args)
{
String[] strings = new String[] {
"", "a", "aa", "aa_bb", "aa bb", "aa - bb", "ß", "ßß", "ßß_ßß", "dždž"
};
for (String str : strings)
System.out.println ("'" + str + "' -> '" + camelcase (str) + "'");
}
}