Java 掩蔽-带星号的地址(星号)-如果数组长度为1?
我有一个数组超出了这个例子的范围Java 掩蔽-带星号的地址(星号)-如果数组长度为1?,java,regex,Java,Regex,我有一个数组超出了这个例子的范围 如果我这样做: 字符串地址=“100点St Apt B” 它也应该被屏蔽:100 Po***St Apt* 如果我这样做: 字符串地址=“100点St Apt 132” 它也被屏蔽了:100 Po***St Apt*** 有人能告诉我我做错了什么吗?谢谢 public String mask(String address) { String[] splitAddress = address.split(" "); StringBu
100 Po***St Apt*
100 Po***St Apt***
public String mask(String address) {
String[] splitAddress = address.split(" ");
StringBuilder stringBuilder = new StringBuilder();
String maskedAddress = "";
String streetNum = splitAddress[0];
stringBuilder.append(streetNum + " ");
for (int i = 1; i < splitAddress.length; i++) {
String splitFirstTwoCharacters = splitAddress[i].substring(0, 2);
String remainingCharactersOfAddress = splitAddress[i].substring(2);
String maskAddress = remainingCharactersOfAddress.replaceAll(".", "*");
maskedAddress = stringBuilder.append(splitFirstTwoCharacters).append(maskAddress + " ").toString().trim();
}
return maskedAddress;
}
公共字符串掩码(字符串地址){
字符串[]splitAddress=地址。拆分(“”);
StringBuilder StringBuilder=新的StringBuilder();
字符串maskedAddress=“”;
String streetNum=splitAddress[0];
stringBuilder.append(streetNum+“”);
for(int i=1;i当您执行拆分地址[i]时。子字符串(0,2)
拆分地址的部分之一是B
,它没有2
的endIndex
。因此,它是不受限制的。当您执行拆分地址[i]时。子字符串(0,2)
拆分地址的部分之一是B
,它没有的endIndex
。因此,它是超出范围的。问题是您在运行子字符串时没有检查字符串的长度
以下是对现有代码没有太多更改的修复:
for (int i = 1; i < splitAddress.length; i++) {
if (splitAddress[i].length() <= 2) {
stringBuilder.append(splitAddress[i] + " ");
continue;
}
String splitFirstTwoCharacters = splitAddress[i].substring(0, 2);
String remainingCharactersOfAddress = splitAddress[i].substring(2);
String maskAddress = remainingCharactersOfAddress.replaceAll(".", "*");
maskedAddress = stringBuilder.append(splitFirstTwoCharacters).append(maskAddress + " ").toString().trim();
}
return stringBuilder.toString().trim();
for(int i=1;i 如果(splitAddress[i].length()问题是您在运行子字符串时没有检查字符串的长度
以下是对现有代码没有太多更改的修复:
for (int i = 1; i < splitAddress.length; i++) {
if (splitAddress[i].length() <= 2) {
stringBuilder.append(splitAddress[i] + " ");
continue;
}
String splitFirstTwoCharacters = splitAddress[i].substring(0, 2);
String remainingCharactersOfAddress = splitAddress[i].substring(2);
String maskAddress = remainingCharactersOfAddress.replaceAll(".", "*");
maskedAddress = stringBuilder.append(splitFirstTwoCharacters).append(maskAddress + " ").toString().trim();
}
return stringBuilder.toString().trim();
for(int i=1;i