0

こんにちは、私はAndroid開発の初心者です..これで私を助けてもらえますか? ファイル名を文字列で取得しようとしています。部分文字列を作成する必要があることはわかっていますが、正しい出力を取得できませんでした。たとえば、次の文字列値があります。

{"Filename":"23476-love-823873.jpg","ChunkId":1,"ChunkLength":201929,"FileLength":12122}

「23476-love-823873.jpg」というファイル名だけを取得したいのですが、どうすればそれができますか? 助けてくれてありがとう。

4

6 に答える 6

1

そこには構造化データがあるので、盲目的に部分文字列でこれを行うべきではありません。代わりに、文字列を JSON として解析し、新しいオブジェクトの適切なプロパティにアクセスできます。org.json からインポートできる Android JSON ライブラリがあります。具体的には、ここでパーサーを使用する必要があります: http://developer.android.com/reference/org/json/JSONTokener.html

于 2013-08-15T03:15:45.643 に答える
1

与えられた:

yourstring= {"Filename":"23476-love-823873.jpg","ChunkId":1,"ChunkLength":201929,"FileLength":12122} 

このコードを試してください:

    int startindex,endindex;
    startindex=indexOf(':');
    endindex=indexOf(',');
    String filename= yourstring.substring(startindex,endindex);
于 2013-08-15T03:20:16.267 に答える
1

構造化されたオブジェクト (HashMap、NameValuePair、JSON など) のように見えます。

とにかく、String の場合

 String mString = "{\"Filename\":\"23476-love-823873.jpg\",\"ChunkId\":1,\"ChunkLength\":201929,\"FileLength\":12122}";



   if(mString.contains("Filename")){
            int start=mString.indexOf("Filename")+11;// If file name is not at beginning, have to do like this.
            int end=mString.indexOf(",", start)-1;//-1 for excluding a double code
            String filename=mString.substring(start, end);
        }
于 2013-08-15T03:33:05.613 に答える
0

これは JSON 文字列のように見えますが、解析する方法はたくさんあります。

SO: Sending and Parsing JSON Objectsに関する同じ質問を参照してください。

于 2013-08-15T03:17:01.127 に答える
0

標準的なアプローチでは、JSON ライブラリを使用して文字列を Java オブジェクトまたはマップに逆シリアル化し、プロパティ値を取得します。重い場合は、正規表現を使用できます。

于 2013-08-15T03:18:43.967 に答える
0

次に、その文字列が json 応答であり、その文字列形式を一貫して取得できると確信している場合は、@ Abhishek によって提供されたアプローチを使用できます。彼が与えたものと同じ、以下の私のサンプルを見てください。

String sample = "{"Filename":"23476-love-823873.jpg","ChunkId":1,"ChunkLength":201929,"FileLength":12122}";

    Log.d("string", sample);
    int startindex,endindex;
    startindex = sample.indexOf(':');
    endindex   = sample.indexOf(',');
    String filename= sample.substring(startindex + 1,endindex);
    Log.d("result", filename);

ログは次のようになります。

string {"Filename":"23476-love-823873.jpg","ChunkId":1,"ChunkLength":201929,"FileLength":12122}
result "23476-love-823873.jpg"
于 2013-08-15T05:10:30.250 に答える