2016-05-24 27 views
0

に戻す句読点を追加します。次に、分割した後、受け取った配列の各要素(スイッチ文字)を処理します。ジャワ、句読点記号、プロセス文字列によって分割文字列は、私はこのような文字列を持っている文字列

そして、すべての句読記号をその場所に戻したいと思います。結果は次のようになります。

Smoe txet, wtih pinctuatuon sgin! 

これを行うにはどのような方法が最適ですか?

+0

'あなたが1つの区切り記号によって分割または多くの可能性がありますか? – ACV

+0

あなたは1つのシンボルで分割しています。たとえば、 'str.split("、 ")'とすると、取得している配列には単語しか含まれていないことがわかります。しかし、私はそれが事実ではないと確信しています。:) はい、@リッチですが、スプリットのアプローチはここでは機能しません。それを1文字ずつトラバースしなければならないでしょう... – ACV

+0

@ACV。それは多くの場合があります(例:「。、:;!?」 –

答えて

1

文字列ごとに文字列を読み取っていました。あなたは句読点文字に到達するまで

  • 文字が文字が句読点でない場合には句読点がStringBuilderの

  • に追加している場合は、その単語を処理し、StringBuilderのにそれを追加し、その後、読んで文字を保持します。 次の句読点にスキップします。

このプリントではなく、StringBuilderのに追加しますが、あなたのアイデアを得る:あなたは文字を追加または削除されていないので

String sentence = "This is a test, message!"; 
for (int i = 0; i<sentence.length(); i++) { 
    if (Character.isLetter(sentence.charAt(i))) { 
    String tmp = "" +sentence.charAt(i); 
    while (Character.isLetter(sentence.charAt(i+1)) && i<sentence.length()) { 
     i++; 
     tmp += sentence.charAt(i); 
    } 
    System.out.print(switchChars(tmp)); 
    } else { 
    System.out.print(sentence.charAt(i)); 
    } 
} 
System.out.println(); 
+0

ありがとうございます。私はこのアプローチを試みます。 –

+0

最後の文字の反復の後、私たちはインデックスを受け取っていました... 'while(Character.isLetter(sentence.charAt(i + 1))&& i

1

を、あなたにもちょうどString.toCharArray()を使用することがあります。

char[] cs = str.toCharArray(); 
for (int i = 0; i < cs.length;) { 
    while (i < cs.length() && !Character.isLetter(cs[i])) ++i; 
    int start = i; 
    while (i < cs.length() && Character.isLetter(cs[i])) ++i; 
    process(cs, start, i); 
} 
String result = new String(cs); 

process(char[], int startInclusive, int endExclusive)は、インデックス間の配列内の文字を混乱させる方法です。

0

あなたは使用することができます。

String[] parts = str.split(","); 
// processing parts 
String str2 = String.join(",", parts); 
2

どのように小さなラインで全体のことをやってはどうですか?

str = str.replaceAll("(?<=\\b\\w)(.)(.)", "$2$1"); 

いくつかのテストコード:

String str = "Some text, with punctuation sign!"; 
System.out.println(str.replaceAll("(?<=\\b\\w)(.)(.)", "$2$1")); 

出力:あなたはこの `str.split( "正規表現")を行うと

Smoe txet, wtih pnuctuation sgin! 
+1

私はなぜこの正規表現が好きですか?D。 – Tom

+2

@Tom LOL!私は** **あなたが意味するものを参照してください:) – Bohemian

関連する問題