我有一个字符串:
String example = "AA5DD2EE3MM";
我想要用空格替换数字。例如:
String example = "AA DD EE MM"
如果字符串会
String anotherExample = "a3ee"
应该变成:
String anotherExample = "a ee"
我希望能够对任意字符串执行此操作,而不仅仅是上面的示例。
我有一个字符串:
String example = "AA5DD2EE3MM";
String example = "AA DD EE MM"
String anotherExample = "a3ee"
应该变成:
String anotherExample = "a ee"
我希望能够对任意字符串执行此操作,而不仅仅是上面的示例。
将输入字符串按数字和非数字字符分割成流,使用String.repeat
将数字映射到相应数量的空格,使用Collectors.joining()
收集字符串:
String input = "AA5DD2EE3MM";
String regex = "(?<=\\D)(?=\\d)|(?<=\\d)(?=\\D)";
String result = Pattern.compile(regex)
.splitAsStream(input)
.map(s -> s.matches("\\d+") ? " ".repeat(Integer.parseInt(s)) : s)
.collect(Collectors.joining());
\d+
,但对于你紧凑的方法表示赞赏。 - Tim BiegeleisenString example = "a4aa";
String newString = "";
for (int i = 0; i < example.length(); i++) {
if (Character.isDigit(example.charAt(i))) {
for (int a = 0; a < Character.getNumericValue(example.charAt(i)); a++) {
newString += " ";
}
} else {
newString += example.charAt(i);
}
}
System.out.println(newString);
Character.getNumericValue(char)
代替Integer.parseInt(String)
,这样你可以直接在char
上使用它,而不必创建另一个String
。此外,考虑从代码中删除所有空行,这将大大提高可读性。 - maloomeisterString input = "AA5DD2EE3MM";
Pattern pattern = Pattern.compile("\\d+");
Matcher m = pattern.matcher(input);
StringBuffer buffer = new StringBuffer();
while (m.find()) {
m.appendReplacement(buffer,new String(new char[Integer.valueOf(m.group())]).replace("\0", " "));
}
m.appendTail(buffer);
System.out.println(buffer.toString()); // AA DD EE MM
public static String replaceDigitsWithSpaces(String input) {
String result = "";
int len = input.length(), i =0;
while( i < len) {
if(Character.isLetter(input.charAt(i))) {
result += input.charAt(i);
}else if(Character.isDigit(input.charAt(i))) {
//generate number upto characters
int k = 0, j = i;
String temp = "";
while(j < len) {
if(Character.isDigit(input.charAt(j))) {
temp += input.charAt(j);
j++;
}else {
break;
}
}
k = Integer.parseInt(temp);
while(k != 0) {
result+= " ";
k--;
}
i = j;
continue;
}
i++;
}
return result;
}
input:: "AA23BB1C11C8"<br>
output:: AA BB C C .
StringBuilder
在字符串拼接时更加高效:
public static String spaceIt(String s) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (Character.isDigit(c)) {
for (int j = 0; j < Character.digit(c, 10); j++) {
sb.append(' ');
}
} else {
sb.append(c);
}
}
return sb.toString();
}
result
的空字符串开始。循环遍历example
字符串中的每个字符。检查该字符是否为数字。如果不是数字,则将该字符附加到result
。如果是数字,则运行一个新的循环,将相应数量的空格附加到result
。这应该是至少处理从0到9转换为空格的数字的开始。尝试编写一些代码,并回答有关该代码的问题。 - nosA11A
是 2 个空格还是 11 个空格? - zysaaa