java split()方法不知道为什么


        String str3=" 阿富汗-金额-高达-九十";
        String[] strArray=str3.split("/");//String[] split(String regex)
        for (int n = 0; n < strArray.length; n++) {
            if (n != strArray.length - 1) {
                System.out.print(strArray[n] + "/");
            }
            else{
                System.out.println(strArray[n]);
            }
        }
    }
}

为什么最后没有出现"/"
结果一点没变,但是是照着书本写的

String str3=" 阿富汗-金额-高达-九十";
->
String str3=" 阿富汗/金额/高达/九十";

split("/") 根据斜杠分隔?你不都是通过-去连接的么,那你if (n != strArray.length - 1)条件怎么会满足呢,应该是 split("-")吧

有帮助的话 采纳一下
String的split()方法来分割字符串,分割符指定为"/"。
split() 是用来安照"/" 来分割的 你的字符串没有 "/" 结果肯定不变了

  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7625911
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:java split 一个或多个空格 分割字符串
  • 除此之外, 这篇博客: Java中split()函数返回空字符串的笔记中的 结果 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • strings.length = 3
    0(1): a
    1(0): 
    2(1): a
    

    这里我们观察到,由于s中存在两个连着的字符b,因此split()在分割时会产生一个空字符串。

  • 以下回答由chatgpt基于相关博客总结生成:

    问题的原因是split()方法在处理空字符串时,会将结尾的空字符串删除。当不传递limit参数时,limit的值默认为0,此时会触发删除结尾空字符串的逻辑。下面是一个具体的解决方案:

    1. 使用split()方法时,可以传递一个limit参数,限制最多分割的部分数量。如果不想删除结尾的空字符串,可以将limit参数设置为一个较大的值,比如Integer.MAX_VALUE。
    String[] result = input.split(regex, Integer.MAX_VALUE);
    
    1. 如果不想删除结尾的空字符串,并且不希望传递limit参数,可以使用正则表达式来替代split()方法。
    Pattern pattern = Pattern.compile(regex);
    Matcher matcher = pattern.matcher(input);
    
    List<String> resultList = new ArrayList<>();
    int lastIndex = 0;
    while (matcher.find()) {
        resultList.add(input.substring(lastIndex, matcher.start()));
        lastIndex = matcher.end();
    }
    resultList.add(input.substring(lastIndex));
    
    String[] result = resultList.toArray(new String[0]);
    

    注意:以上两种解决方案都可以保留结尾的空字符串,但是如果源字符串本身以分隔符结尾,则最后一个空字符串不会被保留。

split()是按照某个规则切割字符串。
看你的意图是要将“-”都替换成“/”,那么这行代码是:String[] strArray=str3.split("-");

String str3=" 阿富汗-金额-高达-九十";
        StringBuilder stringBuilder = new StringBuilder();
        String newStr="";
        String[] strArray=str3.split("-");
        for (int n = 0; n < strArray.length; n++) {
            if (n != strArray.length - 1) {
                stringBuilder.append(strArray[n] + "/");
                System.out.print(strArray[n] + "/");
            }
            else{
                stringBuilder.append(strArray[n]);
                System.out.println(strArray[n]);
            }
        }
        //newStr是你想要的结果
        newStr=stringBuilder.toString();
        System.out.println(newStr);
        //如果需要替换str3
        str3=newStr;
        System.out.println(str3);

那么你这个需求还有一个简单的解决方案:
String str3=" 阿富汗-金额-高达-九十";
String newStr=str3.replaceAll("-","/");