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[] 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 回答
2

也许不是特别优雅,但对我来说很实用 - 使用 String split 方法。首先用“,”分割

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

然后是每个部分(这里是第一个)

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

只为您提供您需要查看的所有内容,并且没有危险与位置等混淆。

于 2012-10-07T05:02:04.000 回答
0

我现在需要的是知道如何捕捉部分文本。

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

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

文本可能会有所不同,更多分隔符有两个,第一个数字与第二个数字用“-”(破折号)分隔,然后用“,”(逗号)分隔

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(文本的第二个数字);------> 转到文本循环中的下一个数字,捕获文本的第二个数字并将其与毫秒进行比较,如果相等则进入 IF 块并捕获破折号后的第二个数字,依此类推,直到你到达文本的结尾。**

方法返回毫秒计算毫秒

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

    return now.getTimeInMillis();

}

我希望明白我为什么使用谷歌翻译器

谢谢你

于 2012-10-08T01:51:16.030 回答