java - 子字符串和 Vector.add 的问题

标签 java string vector javafx-2

代码:

private static Vector<String> storage = new Vector<>();

//Message -> Vector
private static void convertToVector(String string) {
    String msg = string;

    int tempInt = 0;

    while (msg.length() > 1) {
        int run = 0;

        if (msg.indexOf('[') >= 0 && msg.indexOf(']') > 0 && msg.indexOf(':') >= 0) {
            storage.add(msg.substring(msg.indexOf('[')+1, msg.indexOf(':')));
        }

        if (msg.indexOf(':') > 0 && msg.indexOf(']') > 0) {
            tempInt = msg.indexOf("][#");
            if (tempInt < 1)
                tempInt = msg.length()-1;   
            storage.add(msg.substring(msg.indexOf(':')+1, tempInt));
        }

        if (msg.length() > tempInt) {
            msg = msg.substring(tempInt+1);
            run = 1;
        }

        if (msg.length() == tempInt || run == 0)
            msg = "";
    }

    for (int i = 0; i < storage.size(); i++) {
                System.out.println(storage.get(i));
    }
}


情况 1 msg = [#userInfo#:xyz] <-- 工作

    #userInfo#
    xyz

情况 2 msg = [#userInfo#:xyz][#userInfo#:xy] <-- 不起作用?

    #userInfo#
    xyz

情况 3 msg = [#userInfo#:xyz][#userInfo#:xy][#userInfo#:gfdgfd] <-- 工作

    #userInfo#
    xyz
    #userInfo#
    xy
    #userInfo#
    gfdgfd

任何人都可以解释为什么 case2 不起作用,只有当最后一个用户名等于前一个减去最后一个字母时才会发生这种情况。

最佳答案

我怀疑您想将最后一次检查更改为:

        if (msg.length() > tempInt) {
            msg = msg.substring(tempInt + 1);
        } else {
            msg = "";
        }

并删除 run 变量。

照原样,在情况 2 中,在修改消息以删除初始匹配项后,将根据 tempInt 检查消息长度,并且巧合地还剩下 tempInt 字符。

我认为你只是想在比赛失败或击中字符串末尾时停止,所以“其他”应该没问题,除非我错过了一些东西。

关于java - 子字符串和 Vector.add 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35517378/

相关文章:

c++ - 我可以使用 std::vector 使用额外的默认参数初始化元素吗?

java - 具有相同 REST GET 的多种响应类型?

c++ - 在不使用循环的情况下,将 ISBN-10 的前 9 位数字作为字符串读取并计算第 10 位数字

algorithm - 查找字符串重叠的有效算法

Java ArrayList相同字符串分组并获取出现次数最多的String

c# - 如何将 C# 中的二维数组传递给 C++ DLL?

java - 基于文本(命令行)的 Java IDE

java - Java 中的整数返回类型

java - ResultSet 的 Oracle JDBC 性能

language-agnostic - 向量、集合和元组之间的差异