2011-01-17 45 views
4

まあ、このような文字列があります。 "... 1name:john、2name:lice、3name:mike ..."私はその部分文字列 "1name:john"を出力したい。文字列内の位置は固定されていません。私はまた、部分文字列のメソッドを使用しますが、それを取得することはできません。あなたは私に助けを与えることができます。Javaの文字列から部分文字列を取り出す方法

ありがとうございました。

+0

Chris Dennettとhilalに感謝します。私はあなたの助けをしました。 – JavaMobile

+0

あなたは答えとして私たちの1人を受け入れるべきです:) –

答えて

6
String s = str.split(",")[n].trim(); 

私は、位置がランダムである場合にはマップを作るお勧め:

Map<Integer, String> m = new HashMap<Integer, String>(); 
for (String s : str.split(",")) { 
    s = s.trim(); 
    int keyvalstart = -1; 
    for (int i = 0; i < s.length(); i++) { 
     if (!Character.isDigit(i)) { 
     keyvalstart = i; 
     break; 
     } 
    } 
    if (keyvalstart == -1) continue; 
    String s_id = s.substring(0, keyvalstart - 1); 
    String keyvals = s.substring(keyvalstart); 
    int id  = Integer.parseInt(s_id); 
    m.put(id, keyvals); 
} 

マップは、このようにそれぞれの値を文字列に人物IDのリストが含まれます。あなただけのマップの値要素として名を保存したい場合:

Map<Integer, String> m = new HashMap<Integer, String>(); 
for (String s : str.split(",")) { 
    s = s.trim(); 
    int keyvalstart = -1; 
    for (int i = 0; i < s.length(); i++) { 
     if (!Character.isDigit(i)) { 
     keyvalstart = i; 
     break; 
     } 
    } 
    if (keyvalstart == -1) continue; 
    String s_id  = s.substring(0, keyvalstart - 1); 
    int id  = Integer.parseInt(s_id); 
    String keyvals = s.substring(keyvalstart); 
    int valstart = keyvals.indexOf("name: ") + "name: ".length(); 
    String name  = keyvals.substring(valstart); 
    m.put(id, name); 
} 

あなたはより多くのデータを保存したい場合は、キー=値のペアのための第二の例ではStringTokenizerを使用する方が簡単だろうが、私あなたの区切り文字が何であるか分からない。また、オブジェクトをマップの値として格納して、情報を格納する必要があります。

+0

thx、しかし私たちはどのようにnを決めることができますか?その位置は不明であるため – JavaMobile

6
String s = "1name: john, 2name: lice, 3name: mike"; 
String[] names = s.split(", "); // comma and space 

for(String name : names){ 
    System.out.println(name); 
} 
関連する問題