有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

带子字符串的java StringIndexOutOfBoundsException

这是我的代码:

String s = word;
String[] split = s.split(Dictionary.searchTerm);
String s1 = split[0];
String s2 = split[1];
String cut1 = "...";
String cut2 = s2.substring(0, 20);

我得到由String cut2 = s2.substring(0, 20);行引起的java.lang.StringIndexOutOfBoundsException: length=17; regionStart=0; regionLength=20

我想做的是,例如,这是原始字符串s

谷歌
安卓
Gmail
Youtube
苹果
iOS
Mac
微软
Windows

searchTerm是Youtube,因此需要的字符串是

。。。Youtube苹果

如何解决这个问题?基本上,我试图实现的是将搜索词之前的字符串替换为。。。并在搜索词后添加字符串的部分


共 (2) 个答案

  1. # 1 楼答案

    抛出StringOutOfBoundsException是因为假设cut2在索引20处结束,而字符串没有那么长。你需要计算s2的长度,而不是硬编码20。如果您希望s2的长度为21,那么您可能需要检查它是否存储了您认为它存储的内容

  2. # 2 楼答案

    您的需求可以通过以下代码实现,而不是经过严格测试

        String s = "Google     Android    Gmail    Youtube     Apple    iOS     Mac     Microsoft   Hewlett packard      Windows";
    
                String[] keywords = s.split("\\s+");
    
                String searchTerm = "Youtube";
    
                String endText = "";
    
                for(int index = 0; index < keywords.length; index++) {
                    if(keywords[index].contentEquals(searchTerm)) {
                        if(index != (keywords.length - 1)) {
                            endText = endText + "..." + " " + searchTerm + " " + keywords[index + 1];
                        } else {
                            endText = endText + "..." + " " + searchTerm + " " + keywords[0];
                        }
                    }
                }
    
    // Here the endText would be: "... Youtube Apple"