2012-03-06 20 views
2

に挿入することによって、文字列を操作する:私はそれになりたい何は、私は文字列の持つインデックス

C6H14 

は次のとおりです。

C<sub>6</sub>H<sub>14</sub> 

だから、基本的に私は、Aの後に番号の前<sub></sub>を追加したいです数。どうすればこれを達成できますか?

X4Y6Z10W4T12 

答えて

5

は、私は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

0

java.util.String sがJavaで不変であるので、あなたは、新しいStringインスタンスを構築する必要があります:文字列が無限に長くなる可能性があることに注意してください。元の文字列を解析する必要があります(例:正規表現を使用)。 StringBuilderはそのための良いユーティリティです。

2

私はそのため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(); 
0

使用マッチャーとパターンクラスパターンを検索すると:その後 "\\d+"

、インデックスの開始と終了を見つけると<sub>を追加し、「」

1

あなたはこのために新しいStringオブジェクトを作成する必要があります - あり文字列を変更する方法はありません(文字列は不変です)

String.replaceAllこれはあなたのために行います。

str = str.replaceAll("\\d+", "<sub>$0</sub>"); 

あなたは

0

文字列は不変で必要なすべてであるので、我々は既存の文字列にサブタグを挿入傾けます。したがって、新しい文字列を作成するメソッドが必要になります。正規表現を使用するか、文字列ビルダーを使用して次のような新しい文字列を生成することができます:

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(); 
    } 
関連する問題