次のような文字列があります。
CALDARI_STARSHIP_ENGINEERING
次のように編集する必要があります
Caldari Starship Engineering
残念ながら、今は午前 3 時ですが、私は一生これを理解することはできません。私はいつも文字列内のものを置き換えるのに苦労していたので、どんな助けも素晴らしいものであり、将来これを行う方法を理解するのに役立ちます.
次のような文字列があります。
CALDARI_STARSHIP_ENGINEERING
次のように編集する必要があります
Caldari Starship Engineering
残念ながら、今は午前 3 時ですが、私は一生これを理解することはできません。私はいつも文字列内のものを置き換えるのに苦労していたので、どんな助けも素晴らしいものであり、将来これを行う方法を理解するのに役立ちます.
このようなものは簡単です:
String text = "CALDARI_STARSHIP_ENGINEERING";
text = text.replace("_", " ");
StringBuilder out = new StringBuilder();
for (String s : text.split("\\b")) {
if (!s.isEmpty()) {
out.append(s.substring(0, 1) + s.substring(1).toLowerCase());
}
}
System.out.println("[" + out.toString() + "]");
// prints "[Caldari Starship Engineering]"
これsplit
は単語境界アンカーにあります。
Matcher
ループ ソリューションを使用してもかまわない場合は、次のように loop をStringBuffer
使用することもできます。Matcher.appendReplacement/Tail
String text = "CALDARI_STARSHIP_ENGINEERING";
text = text.replace("_", " ");
Matcher m = Pattern.compile("(?<=\\b\\w)\\w+").matcher(text);
StringBuffer sb = new StringBuffer();
while (m.find()) {
m.appendReplacement(sb, m.group().toLowerCase());
}
m.appendTail(sb);
System.out.println("[" + sb.toString() + "]");
// prints "[Caldari Starship Engineering]"
正規表現は、アサーションを使用して、単語の「末尾」部分 (小文字にする必要がある部分) と一致させます。後ろ(?<=...)
を見て、単語の境界の\b
後に単語の文字が続くことを確認し\w
ます。残り\w+
は小文字にできるように一致させる必要があります。
\l
\u
Java 正規表現は、Perl の前処理操作、、\L
およびをサポートしていません\U
。appendReplacement/Tail
取るだけStringBuffer
これを試すことができます:
String originalString = "CALDARI_STARSHIP_ENGINEERING";
String newString =
WordUtils.capitalize(originalString.replace('_', ' ').toLowerCase());
WordUtils
Commons Lang ライブラリの一部です ( http://commons.apache.org/lang/ )
正規表現の使用:
String s = "CALDARI_STARSHIP_ENGINEERING";
StringBuilder camel = new StringBuilder();
Matcher m = Pattern.compile("([^_])([^_]*)").matcher(s);
while (m.find())
camel.append(m.group(1)).append(m.group(2).toLowerCase());
テストされていませんが、それは私が少し前に同じことを実装した方法です:
s = "CALDARI_STARSHIP_ENGINEERING";
StringBuilder b = new StringBuilder();
boolean upper = true;
for(char c : s.toCharArray()) {
if( upper ) {
b.append(c);
upper = false;
} else if( c = '_' ) {
b.append(" ");
upper = true;
} else {
b.append(Character.toLowerCase(c));
}
}
s = b.toString();
EVE ライセンス契約では、キャリアに役立つ外部ツールの作成が禁止されている可能性があることに注意してください。また、EVE のほとんどは Python で書かれているため、Python を学ぶきっかけになるかもしれません :)。
手っ取り早い方法:
すべて小文字
line.toLowerCase();
単語に分割:
String[] words = line.split("_");
次に、最初の文字を大文字にして単語をループします。
words[i].substring(0, 1).toUpperCase()