2016-10-06 13 views
0

だから私はthis(文字列を分割する方法を尋ねる質問)を見てきましたが、答えは本当に私の質問には関係ありません。ユーザーが入力した文字列を分割する方法

ユーザーはsqlite DBに格納されている重みを入力しますが、入力したところの下のTextViewに数値を表示します(アプリは7日間の重みを追跡します)。

DBから文字列を取得しようとすると、その文字列が長い文字列として格納され、私がやりたいことはその文字列を分割することです(私は意味をなさないと思います)。

私には以下の方法があります。

public String[] getWeight() { 

    String selectQuery = "SELECT " + DowncroftContract.WEIGHT_VALUE + " FROM " + DowncroftDatabase.WEIGHT_TABLE; //+ " WHERE " + DowncroftContract.WEIGHT_DOGS_ID + " = " + str_dogsId + " ORDER BY " + DowncroftContract.WEIGHT_DATE + " ASC;"; 
    SQLiteDatabase db = downcroftDatabase.getReadableDatabase(); 
    Cursor cursor = db.rawQuery(selectQuery, null); 
    String[] data = null; 

    if (cursor.moveToFirst()) { 
     do { 
      results = cursor.getString(cursor.getColumnIndex(DowncroftContract.WEIGHT_VALUE + "")); 
      String[] splitString = results.split(""); 
      String split1 = splitString[1]; 
      String split2 = splitString[2]; 
      DayOne.append(split1); 
      DayTwo.append(split2); 
     } while (cursor.moveToNext()); 

    } 
    cursor.close(); 
    return data; 
} 

今、上記の方法は、単一の数字までの文字列を分割しますが、私はそのはすべての二つの図のためにそれを分割するように文字列を分割する方法を見つけ出すように見える傾けます。

E.Gユーザーが20回押してEnterを押すと、DayOneというTextViewにドロップされます。

翌日、ユーザーは24を入力し、enter-を押して、DayTwoというTextViewにドロップします。

私はおそらくforループで配列が必要だと思いますが、既に持っているものを微調整することで、私が望むものを達成することが可能かどうか疑問です。

+1

...だuが私に分割して、出力のための入力例を与えることができますか? –

+1

入力例と予想出力例を挙げてください。説明されていることだけを説明してはいけません。 – LoveForDroid

答えて

1

文字列を2文字ごとに分割したいのですか?

あなたは文字列123456を持っていますが、あなたは123456が必要ですか?

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

String[] split = result.split("(?<=\\G..)");

これはつもりはあなたの文字列ごとに2文字を分割しています。 \Gは前のマッチ後の位置(または前にマッチしなかった場合は文字列の先頭)と2文字の後にアサートします。

+0

はい、正しいはずですが、私が提案したように変更を加えると、次のエラーが発生します。 java.lang.IllegalStateException:行0、列-1 CursorWindowから読み取ることができませんでした。カーソルがデータにアクセスする前に、カーソルが正しく初期化されていることを確認してください。しかし私は上記の私のコードで見ることができるようにカーソルを初期化しましたか? –

+0

これに影響を受けたこのポストからの変更はありません。前に何か間違ったことがあったか、誤って何かを変更しました。あなたが正しくカーソルを使って作業しているかどうかは分かりませんが、本当によく覚えていません。申し訳ありません。 – Shadov

+0

'(?<= \\ G ..)'パターンはAndroid(ICU flavor)では動作せず、Java( 'java.util.regex')のみで動作します。 –

0

[ガイ上記は、基本的には同じことをした、唯一のリフレッシュで見た、スニペットはおそらくまだかかわらず、有用であろう..]

あなたの文字列を分割された部分は、これが後に分割String[] splitString = results.split("");

ですすべての "何もない"ので、本質的に、すべての文字が文字列を分割した後。

ここで私はあなたのために一緒に働い少しのコードスニペットは、

import java.util.Arrays; //only essential for the Arrays toString bit... 

public class Main { 

    //Static so it's usable anywhere.. 
    public static String[] splitStringBy(int everyXLetter, String stringCode) 
    { 
     // Split the given string by regex, every Xth letter... 
     String[] splitIntoSingleElements = stringCode.split("(?<=\\G.{"+everyXLetter+"})"); 
     // Return it 
     return splitIntoSingleElements; 
    } 

    public static void main(String[] args) 
    { 
     //Set some string text... 
     String text = "askfjaskfjasf"; 
     //Split and store the string using the above function 
     String[] splitText = splitStringBy(2, text); 

     //Return it any way you like 
     System.out.println(Arrays.toString(splitText)); // [as, kf, ja, sk, fj, as, f] 
     System.out.println(splitText[0]); // as 
    } 
} 
関連する問題