2011-03-21 8 views
1

文字列を分割することができません私は、文字列を持っている

氏praneel PIDIKITI

私は、私は2つだけを取得しています三つの部分を取得する

String[] nameParts = name.split("\\s+"); 

代わりに、この正規表現を使用する場合、MrおよびPraneel PIDIKITI

2番目の文字列を分割できません。誰が問題になるかも知っていますか?

私はさらにsplit(" ");を使用しました。

問題は、replaceAll("\\<.*?>", " ").trim();を使用してhtmlをこの文字列に変換してから、name.split("\\s+");を使用して名前の値を取得しています。

スペース(特殊文字)以外のものでなければならないと思います。

+2

私はこれを確認することはできません。両方のアプローチが私のために働く。完全な例を提供してください。 – musiKk

+2

これは遠くに見えるかもしれませんが、PraneelとPIDIKITIの間のスペースは実際には空白文字0x20ではありませんか? – Maverik

+1

@Maverik:まったく遠くにフェッチされているわけではありません。 @Praneel:文字列をループし、各文字をintとして出力し、実空間は32になります。 –

答えて

3

あなたのコードはうまくいくはずです。私はあなたの入力を疑う。 PraneelとPIDIKITIの間に印刷できないジャンク文字が存在する可能性があります。たとえば、

String name = "Mr praneel" + (char)1 +"PIDIKITI"; 
    String[] nameParts = name.split("\\s+"); 
    for(String s : nameParts) 
     System.out.println(s); 

PraneelとPIDIKITIの間にジャンク文字はありませんか?あなたがHTMLを解析している場合、私はJSoupを勧告することができる、

// remove non printable characters excluding white space characters 
    name = name.replaceAll("[^\\p{Print}\\s]",""); 
+0

これを画面に表示すると、このように見えます#Praneel#PIDIKITI –

+0

@Praneel:この 'name.replaceAll(" [^ \\ p {Print}] "、" ") 。 –

+0

@Praneel:PraneelとPIDIKITIの間にはスペースはありませんが、迷惑メールはありません。 –

0

は、このような非印字可能な文字を削除しますか?その優れたHTMLパーサーのJava用

関連する問題