に挿入することによって、文字列を操作する:私はそれになりたい何は、私は文字列の持つインデックス
C6H14
は次のとおりです。
C<sub>6</sub>H<sub>14</sub>
だから、基本的に私は、Aの後に番号の前<sub>
と</sub>
を追加したいです数。どうすればこれを達成できますか?
X4Y6Z10W4T12
に挿入することによって、文字列を操作する:私はそれになりたい何は、私は文字列の持つインデックス
C6H14
は次のとおりです。
C<sub>6</sub>H<sub>14</sub>
だから、基本的に私は、Aの後に番号の前<sub>
と</sub>
を追加したいです数。どうすればこれを達成できますか?
X4Y6Z10W4T12
は、私はJavaの専門家ではないんだけど、私はかなり確信している:
(\d+)
と置換文字列は次のようになります。私は番目の約100%わからないんだけど
<sub>$1</sub>
申し訳ありません電子のJavaの構文が、それはのようなものになります。このメソッドは、ここでのJava 5で
を添加し、
str = str.replaceAll("(\\d+)", "<sub>$1</sub>");
Javaで正規表現についてのいくつかの詳細は以下のとおりです。
http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html
http://www.regular-expressions.info/java.html
http://javamex.com/tutorials/regular_expressions/search_replace.shtml
java.util.String
sがJavaで不変であるので、あなたは、新しいStringインスタンスを構築する必要があります:文字列が無限に長くなる可能性があることに注意してください。元の文字列を解析する必要があります(例:正規表現を使用)。 StringBuilderはそのための良いユーティリティです。
私はそのためMatcher
を使用します。あなたはパターンがなる機能を、交換する正規表現を使用することができ、
StringBuffer sb = new StringBuffer();
Matcher m = Pattern.compile("\\d+").matcher(input);
while(m.find()) {
m.appendReplacement(sb,"<sub>$0</sub>");
}
m.appendTail(sb);
String newString = sb.toString();
使用マッチャーとパターンクラスパターンを検索すると:その後 "\\d+"
、インデックスの開始と終了を見つけると<sub>
を追加し、「」
あなたはこのために新しいStringオブジェクトを作成する必要があります - あり文字列を変更する方法はありません(文字列は不変です)
String.replaceAll
これはあなたのために行います。
str = str.replaceAll("\\d+", "<sub>$0</sub>");
あなたは
文字列は不変で必要なすべてであるので、我々は既存の文字列にサブタグを挿入傾けます。したがって、新しい文字列を作成するメソッドが必要になります。正規表現を使用するか、文字列ビルダーを使用して次のような新しい文字列を生成することができます:
public String parseString(String input) {
StringBuilder builder = new StringBuilder();
String format = "<sub>%c</sub>";
for(char c:input.toCharArray()) {
if (Character.isDigit(c)) {
builder.append(String.format(format, c));
} else {
builder.append(c);
}
}
return builder.toString();
}