📅  最后修改于: 2023-12-03 15:36:17.264000             🧑  作者: Mango
在 Java 编程中,有时候我们需要从字符串中删除空格。这可以通过许多不同的方式来实现,本文介绍其中常用的几种方法。
String 类的 replaceAll() 方法可以根据正则表达式替换字符串中的匹配项。我们可以使用如下的正则表达式匹配所有空格字符:
"\\s+"
使用 replaceAll() 方法将空格字符替换为空字符串即可删除它们:
String str = " This is a string with spaces. ";
String newStr = str.replaceAll("\\s+", "");
System.out.println(newStr);
输出为:
Thisisastringwithspaces.
注意,该方法会返回一个新字符串,原始字符串不会被修改。
如果需要处理大量字符串,并且性能是一个问题,使用 StringBuilder 可以更有效率地删除空格。我们可以使用一个类似的正则表达式来匹配空格字符:
Pattern pattern = Pattern.compile("\\s+");
Matcher matcher = pattern.matcher(str);
然后,我们可以逐步替换每个匹配项:
while (matcher.find()) {
int start = matcher.start();
int end = matcher.end();
builder.append(str, pos, start);
pos = end;
}
builder.append(str, pos, str.length());
完整的示例代码如下:
String str = " This is a string with spaces. ";
Pattern pattern = Pattern.compile("\\s+");
Matcher matcher = pattern.matcher(str);
StringBuilder builder = new StringBuilder();
int pos = 0;
while (matcher.find()) {
int start = matcher.start();
int end = matcher.end();
builder.append(str, pos, start);
pos = end;
}
builder.append(str, pos, str.length());
String newStr = builder.toString();
System.out.println(newStr);
输出为:
Thisisastringwithspaces.
如果你不想使用正则表达式或 StringBuilder,你可以使用一个单一的循环来删除字符串中的空格。这种方法更加简单,但可能会影响性能。
String str = " This is a string with spaces. ";
char[] chars = str.toCharArray();
int len = chars.length;
int pos = 0;
for (int i = 0; i < len; i++) {
if (!Character.isWhitespace(chars[i])) {
chars[pos++] = chars[i];
}
}
String newStr = new String(chars, 0, pos);
System.out.println(newStr);
输出为:
Thisisastringwithspaces.
这里我们将字符串转换为一个字符数组,然后循环遍历每个字符。如果当前字符不是空格,我们将其保存在新的字符数组中,并递增计数器,以便在最后创建新的字符串时只包括有用的字符。
以上是从字符串 Java 中删除空格的三种不同方法,你可以根据你的需求选择最适合你的方法。