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() 是用来安照"/" 来分割的 你的字符串没有 "/" 结果肯定不变了
strings.length = 3
0(1): a
1(0):
2(1): a
这里我们观察到,由于s
中存在两个连着的字符b,因此split()
在分割时会产生一个空字符串。
问题的原因是split()方法在处理空字符串时,会将结尾的空字符串删除。当不传递limit参数时,limit的值默认为0,此时会触发删除结尾空字符串的逻辑。下面是一个具体的解决方案:
String[] result = input.split(regex, Integer.MAX_VALUE);
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("-","/");