【问题标题】:Getting various slices from a string in Java [closed]从Java中的字符串获取各种切片[关闭]
【发布时间】:2018-04-28 15:39:47
【问题描述】:

我正在尝试从字符串中获取具有确定长度的各种切片。

在下面的代码中,我不知道为什么子字符串函数的返回与设置的长度不匹配。

我只在第一次返回时看到匹配值,但之后的所有结果都是无效的。

class Counter {
    public static void main(String[] args) {
        String listBits = "5,1,1,5,0,5,3,3,2,0,2,3,1,1,0,";
        int width = 6;

        String stringSlice = "";
        int maxBeginSlice = listBits.length() - (width * 2) + 1;

        System.out.println(listBits);

        for (int x = 1; x <= maxBeginSlice; x = x + 2) {

            System.out.print((x - 1) + "->");

            stringSlice = listBits.substring(x - 1, width * 2);

            System.out.println(stringSlice);

        }
    }
}

输出:

5,1,1,5,0,5,3,3,2,0,2,3,1,1,0,
0->5,1,1,5,0,5,
2->1,1,5,0,5,
4->1,5,0,5,
6->5,0,5,
8->0,5,
10->5,
12->
14->

例外情况:

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: 
String index out of range: -2
at java.lang.String.substring(String.java:1967)
at Main.main(Main.java:49)

【问题讨论】:

  • 能把得到的输出和想要得到的输出贴出来吗?
  • 您知道构成字符串的不仅是数字,还有逗号、','、它们之间的字符?
  • 我想要的只是不同位置的字符串中相同长度的切片。
  • @GilbertoRodrigues,再次阅读有关子字符串的文档。第二个参数是结束索引,而不是长度。
  • 感谢@JoakimDanielson。解决了!!

标签: java string substring


【解决方案1】:

如果你想要一个固定长度的切片那么你需要根据开始位置改变结束索引,第二个参数为子字符串。

int endIndex = x - 1 + width * 2;
stringSlice = listBits.substring(x - 1, endIndex);

当然你还需要检查 endIndex 和字符串长度

【讨论】:

    【解决方案2】:
    String substring(int startIndex, int endIndex):
    

    您需要修复代码并编辑width 参数。

    listBits.substring(x - 1, width * 2); //edit width to your needs.
    

    【讨论】:

    • 丹尼斯,宽度是一个常数。正如您在 OUTPUT 上看到的,子字符串的结果是 VARIANT ...这是我的问题。它必须是恒定的,但不是。
    • 丹尼尔的回答正是我的意思??
    • 现在我明白了,但是你写的方式我认为你没有理解“宽度”变量。但是现在我看到您在谈论“endIndex”参数。也感谢您的帮助,@Denis Vash
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多