2016-04-11 5 views
-1

パイプ記号 '|'を使用して文字列を分割する必要があります。セパレータとしてパイプ記号を使用して文字列値を分割する方法はありますか?

このシナリオでは文字列値を分割できますが、 に「0〜9」より大きい「箇条書き数」がある場合は、その数値の最初の桁のみが出力されます。

例:入力が11. Welcome to java programming であれば、これはこれは私が得る出力され、これまで

public static void main(String[] args) { 

    String split_vls = "11. Welcome1. to java programming |1. Oops concepts |12. Encapsulation |3.Abstraction |14.Inheritance |5.Polymorphism"; 
    String[] Numeric_split = split_vls.split("\\|*(\\d+\\.)\\s*"); 
    for (String pipes_Split : Numeric_split) { 
     System.out.println(pipes_Split); 
    } 
} 

私のコードです1 Welcome to java programming

を印刷します:

Javaプログラミングに Oopsの概念 カプセル化 抽象化
継承
ポリモーフィック

これは、予想される出力です:

ようこそJavaプログラミング
おっとコンセプトに
カプセル
抽象
継承
ポリモーフィック

答えて

3

問題は、あなたの式が|.の間に1つの「単語文字」しかないことです。あなたは、「1つ以上」できるようにする必要があります。

String[] Numeric_split = split_vls.split("\\|*(\\w+\\.)\\s*"); 
//            ^

Demo.

+0

卿を更新しました「」のような文で:11.ようこそ。 Javaプログラミングへそれは文を分割しています。このシナリオでは、Excepted出力は得られません。 'Javaプログラミングへ ようこそ 抽象 継承 ポリモーフィズム ' –

+0

@Cholaあなたは文字にマッチするのを避けるために\\ '' \\ D 'とw'を置き換えることができます概念 カプセル化おっと([デモ](のhttp:// ideone .com/GbHvfJ))。 – dasblinkenlight

+0

先生、新しい番号と「。」を付け加えれば、あなたの答えからいくつかの変更を加えました。それは完全に前の単語 "ウェルカム"を完全に削除します。私の質問をチェックしてください。そして私に解決策を教えてください。 –

0

文字列にある値を取得します。

あなたの文字列:

String split_vls = "11. Welcome to java programming |1. Oops concepts |12. Encapsulation |3.Abstraction |14.Inheritance |5.Polymorphism"; 

はこれを試してみてください:

StringTokenizer st= new StringTokenizer(split_vls, "|"); 
while (st.hasMoreElements()) { 
    System.out.println(st.nextToken()); 
} 

出力:

11.ようこそ、Javaプログラミングに
1.おっと概念
12カプセル
3.アブストラクション
14.継承
5。ポリモーフィズム

か:

String[] Numeric_split = split_vls.split("\\|*(\\w+\\.)\\s*"); 
for (String pipes_Split : Numeric_split) { 
    System.out.println(pipes_Split); 
} 

出力:

ようこそJavaプログラミング
おっと概念
カプセルに
抽象
継承
ポリモーフィズム

+0

しかし、私の期待される結果:前の数字や弾丸のいずれかの種類なし。私が持っている場合は、Javaプログラミングへ ようこそ 概念 カプセル化おっと 抽象 継承 多形 –

+0

は、答え –

関連する問題