3

「;」で区切られたこのようなテキストファイルがあります 1022-3、1603-4、2012-5、2489-6;

「-」の前の最初の部分をキャッチして変数に渡し、ミリ秒と比較します。が数値と等しい場合は、「-」の後の数値をキャプチャします。そして、セミコロンの後の次の番号でそうします。

public static long MilliSeconds() {
    // get Calendar instance
    Calendar now = Calendar.getInstance();

    return now.getTimeInMillis();

}

そして、私がここでこれを必要とすることを行うためのコードの始まり

private void LerArquivo() {
        String lstrNomeArq;
        File arq;
        String lstrlinha;
        long tempoInicio = 0;
        long tempoDecorrido = 0;
        try {

            tempoDecorrido = (RecordSound.MilliSeconds() - tempoInicio); 


            lstrNomeArq = "/Android/data/br.com.couldsys.drumspro/cache/GravaSound.TXT";

            String conteudotexto = "";

            arq = new File(Environment.getExternalStorageDirectory(),
                    lstrNomeArq);
            BufferedReader br = new BufferedReader(new FileReader(arq));

            // pega o conteudo do arquivo texto
            conteudotexto = br.readLine();

            String capturaIndex = ("Conteudo do texto: "
                    + conteudotexto.substring(
                            conteudotexto.indexOf("-") + 1,
                            conteudotexto.indexOf(";",
                                    conteudotexto.lastIndexOf("-"))));


            if (tempoDecorrido == capturatempo) { 

                DrumsProActivity.vsm.playSound(capturaindex);
                // ler a nova linha
                // se chegar ao final do string então para o while
                if (conteudotexto.length() > 0) {
                    executar = false;
                }

            }

        } catch (Exception e) {
            trace("Erro : " + e.getMessage());
        }
    }
4

3 に答える 3

2

おそらく特にエレガントではありませんが、私にとっては実用的です-文字列分割メソッドを使用してください。最初に「、」で分割

String[] parts = conteudotexto.split(",");

次に、各パーツを使用します(ここでは最初のパーツです)

String[] subParts = parts[0].split("-");

あなたが見る必要のある部分のすべてをあなたに与えるだけで、危険が位置などと混同されることはありません。

于 2012-10-07T05:02:04.000 に答える
2

この単純なコードを使用してください: ####-# 形式の文字列を含む部分文字列の配列を作成します。

string[] MyStr = conteudotexto.split(',');

string sss= MyStr[0];
string sss2= MyStr[1];

....

現在、sss は 1022-3、sss2 は 1603-4 など....

次に、分割機能を再利用します。

string[] MyStr2 = sss.split('-');

MyStr2[0] = 1022 MyStr2[1] = 3

于 2012-10-07T04:59:46.563 に答える
0

今必要なのは、テキストの一部をキャッチする方法を知ることです。

arq = new File(Environment.getExternalStorageDirectory(),
                    lstrNomeArq);
            BufferedReader br = new BufferedReader(new FileReader(arq));

            // pega o conteudo do arquivo texto
            conteudotexto = br.readLine(); 

テキストはさらに異なる場合があります。区切りは 2 つです。最初の数字と 2 番目の数字は「-」(ダッシュ) で区切られ、「,」(コンマ) で区切られます。

549-8,1019-9,1404-3,1764-3,2208-10,2593-5,2938-9,3264-6,3700-0,4174-7,4585-8,4840-2,5192- 9,5540-10,5932-0、

示されているように

String[] parte1 = conteudotexto.split(",");

e em seguida

String[] parte2 = parte1[0].split("-");

私がやろうとしているルールは次のとおりです。メソッドがミリ秒以内に回転し、テキストの最初の部分と比較します

タイプ

* *valor_milissegundos の最初の部分がテキストの数と等しい場合 ---> 関数 playSound (テキストの 2 番目の数) に入り、実行します。------> テキスト ループの次の数値に移動し、テキストの 2 番目の数値をキャプチャしてミリ秒と比較し、等しい場合は IF ブロックに入り、ダッシュの後の 2 番目の数値をキャッチします。テキストの最後まで。**

メソッド return milliseconds はミリ秒を計算します

public static long MilliSeconds() {
    // get Calendar instance
    Calendar now = Calendar.getInstance();

    return now.getTimeInMillis();

}

Google翻訳を使用した理由を理解していただければ幸いです

ありがとうございました

于 2012-10-08T01:51:16.030 に答える