splitメソッドが2つの要素を持つ配列を返さないのはなぜですか?文字列分割メソッドは2つの文字列を返しません
for(int i = 0; i < temparray.size(); i++)
{
if (temparray.get(i).contains("_"))
System.out.println("True" + temparray.get(i).length() + " " + temparray.get(i));
String[] temp = temparray.get(i).split("_");
System.out.println(temp[0]);
//System.out.println(temp[1]);
//friendsOld.add(new Friend(temp[0],temp[1]));
}
いずれかの行のコメントを外すと、ArrayOutofBoundsException: 1
と表示されます。 printlnは常にTrue、Stringの長さ、そして最後にStringではなく_
のStringを返します。
Iは、配列をcharに文字列を変換し、それを手動で分割substring()
を用い、次いで_
の位置を見つけるためにindexOf()
を使用して文字列を壊し、.split()
用負のパラメータを試してみました。 String自体に問題があるかもしれませんが、ここでは文字列の配列のコードはArrayList<String> temparray = new ArrayList<String>();
です。
temparray.get(i)に格納されている正確な文字列値は何ですか? –
あなたはそのコードをどんな文字列に適用していますか?いくつかの例を示して、解決策を見つけるのを手助けするのが簡単になります。 – pcalcao
他の人がすでに言及しているように、あなたはいくつかの括弧を忘れているかもしれません。しかし、後続の空の文字列は含まれていないので、文字列 "foo_"はセパレータを含んでいても1つの要素だけを返します(http://docs.oracle.com/javase/1.4.2/を参照してください)。ドキュメント/ API/Javaの/ LANG/String.html#スプリット%の28java.lang.String%の29) –