您好,登录后才能下订单哦!
在Java编程中,处理字符串是非常常见的操作。字符串中的空格可能会影响程序的逻辑和输出结果,因此删除字符串中的空格是一个常见的需求。本文将详细介绍在Java中删除字符串空格的多种方式,包括使用内置方法、正则表达式、第三方库等。我们将通过代码示例和详细解释来帮助读者理解和掌握这些方法。
trim()
方法删除字符串两端的空格trim()
是Java中最常用的删除字符串两端空格的方法。它会删除字符串开头和结尾的所有空白字符(包括空格、制表符、换行符等),但不会影响字符串中间的空格。
public class TrimExample {
public static void main(String[] args) {
String str = " Hello, World! ";
String trimmedStr = str.trim();
System.out.println("Original: '" + str + "'");
System.out.println("Trimmed: '" + trimmedStr + "'");
}
}
Original: ' Hello, World! '
Trimmed: 'Hello, World!'
trim()
方法会删除字符串开头和结尾的所有空白字符。trim()
方法不会删除它们。replaceAll()
方法删除所有空格replaceAll()
方法可以使用正则表达式来替换字符串中的特定字符。通过使用正则表达式\\s
,我们可以匹配所有的空白字符(包括空格、制表符、换行符等),并将其替换为空字符串。
public class ReplaceAllExample {
public static void main(String[] args) {
String str = " Hello, World! ";
String noSpaceStr = str.replaceAll("\\s", "");
System.out.println("Original: '" + str + "'");
System.out.println("No Space: '" + noSpaceStr + "'");
}
}
Original: ' Hello, World! '
No Space: 'Hello,World!'
replaceAll("\\s", "")
会删除字符串中的所有空白字符。replace()
方法删除特定空格replace()
方法可以用来替换字符串中的特定字符或字符串。如果我们只想删除普通的空格字符(ASCII码为32),可以使用replace(" ", "")
。
public class ReplaceExample {
public static void main(String[] args) {
String str = " Hello, World! ";
String noSpaceStr = str.replace(" ", "");
System.out.println("Original: '" + str + "'");
System.out.println("No Space: '" + noSpaceStr + "'");
}
}
Original: ' Hello, World! '
No Space: 'Hello,World!'
replace(" ", "")
只会删除普通的空格字符,不会删除制表符、换行符等其他空白字符。StringUtils
类删除空格(Apache Commons Lang库)Apache Commons Lang库提供了一个非常实用的StringUtils
类,其中包含了许多处理字符串的静态方法。StringUtils.deleteWhitespace()
方法可以删除字符串中的所有空白字符。
首先,需要在项目中添加Apache Commons Lang库的依赖。如果使用Maven,可以在pom.xml
中添加以下依赖:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
</dependency>
import org.apache.commons.lang3.StringUtils;
public class StringUtilsExample {
public static void main(String[] args) {
String str = " Hello, World! ";
String noSpaceStr = StringUtils.deleteWhitespace(str);
System.out.println("Original: '" + str + "'");
System.out.println("No Space: '" + noSpaceStr + "'");
}
}
Original: ' Hello, World! '
No Space: 'Hello,World!'
StringUtils.deleteWhitespace()
方法会删除字符串中的所有空白字符,包括空格、制表符、换行符等。strip()
方法删除Unicode空白字符(Java 11及以上版本)从Java 11开始,String
类新增了strip()
、stripLeading()
和stripTrailing()
方法,用于删除字符串中的Unicode空白字符。与trim()
方法不同,strip()
方法可以处理Unicode空白字符,而不仅仅是ASCII空白字符。
public class StripExample {
public static void main(String[] args) {
String str = " Hello, World! ";
String strippedStr = str.strip();
System.out.println("Original: '" + str + "'");
System.out.println("Stripped: '" + strippedStr + "'");
}
}
Original: ' Hello, World! '
Stripped: 'Hello, World!'
strip()
方法会删除字符串开头和结尾的所有Unicode空白字符。stripLeading()
和stripTrailing()
方法分别用于删除字符串开头和结尾的空白字符。StringTokenizer
类删除空格StringTokenizer
类可以将字符串分割成多个令牌(tokens),并且可以指定分隔符。通过将空格作为分隔符,我们可以将字符串分割成多个部分,然后再将这些部分拼接起来,从而实现删除空格的效果。
import java.util.StringTokenizer;
public class StringTokenizerExample {
public static void main(String[] args) {
String str = " Hello, World! ";
StringTokenizer tokenizer = new StringTokenizer(str, " ");
StringBuilder noSpaceStr = new StringBuilder();
while (tokenizer.hasMoreTokens()) {
noSpaceStr.append(tokenizer.nextToken());
}
System.out.println("Original: '" + str + "'");
System.out.println("No Space: '" + noSpaceStr.toString() + "'");
}
}
Original: ' Hello, World! '
No Space: 'Hello,World!'
StringTokenizer
类将字符串按照空格分割成多个令牌。split()
和join()
方法删除空格split()
方法可以将字符串按照指定的正则表达式分割成数组,而join()
方法可以将数组中的元素拼接成一个字符串。通过将字符串按照空格分割成数组,然后再将数组中的元素拼接起来,可以实现删除空格的效果。
public class SplitJoinExample {
public static void main(String[] args) {
String str = " Hello, World! ";
String[] parts = str.split("\\s+");
String noSpaceStr = String.join("", parts);
System.out.println("Original: '" + str + "'");
System.out.println("No Space: '" + noSpaceStr + "'");
}
}
Original: ' Hello, World! '
No Space: 'Hello,World!'
split("\\s+")
将字符串按照一个或多个空白字符分割成数组。String.join("", parts)
将数组中的元素拼接成一个字符串,中间没有分隔符。Pattern
和Matcher
类删除空格Pattern
和Matcher
类是Java中用于处理正则表达式的工具。通过使用正则表达式\\s
,我们可以匹配所有的空白字符,并将其替换为空字符串。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class PatternMatcherExample {
public static void main(String[] args) {
String str = " Hello, World! ";
Pattern pattern = Pattern.compile("\\s");
Matcher matcher = pattern.matcher(str);
String noSpaceStr = matcher.replaceAll("");
System.out.println("Original: '" + str + "'");
System.out.println("No Space: '" + noSpaceStr + "'");
}
}
Original: ' Hello, World! '
No Space: 'Hello,World!'
Pattern.compile("\\s")
编译了一个匹配所有空白字符的正则表达式。matcher.replaceAll("")
将所有匹配的空白字符替换为空字符串。Stream
API删除空格(Java 8及以上版本)Java 8引入了Stream
API,可以方便地对集合和数组进行操作。通过将字符串转换为字符流,过滤掉空白字符,然后再将字符流拼接成字符串,可以实现删除空格的效果。
import java.util.stream.Collectors;
public class StreamExample {
public static void main(String[] args) {
String str = " Hello, World! ";
String noSpaceStr = str.chars()
.filter(c -> !Character.isWhitespace(c))
.mapToObj(c -> String.valueOf((char) c))
.collect(Collectors.joining());
System.out.println("Original: '" + str + "'");
System.out.println("No Space: '" + noSpaceStr + "'");
}
}
Original: ' Hello, World! '
No Space: 'Hello,World!'
str.chars()
将字符串转换为一个IntStream
,其中每个元素是字符的ASCII码。filter(c -> !Character.isWhitespace(c))
过滤掉所有的空白字符。mapToObj(c -> String.valueOf((char) c))
将ASCII码转换为字符。collect(Collectors.joining())
将字符流拼接成一个字符串。Guava
库删除空格Guava是Google提供的一个Java库,其中包含了许多实用的工具类和方法。CharMatcher
类可以用于匹配和操作字符,包括删除空白字符。
首先,需要在项目中添加Guava库的依赖。如果使用Maven,可以在pom.xml
中添加以下依赖:
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>31.0.1-jre</version>
</dependency>
import com.google.common.base.CharMatcher;
public class GuavaExample {
public static void main(String[] args) {
String str = " Hello, World! ";
String noSpaceStr = CharMatcher.whitespace().removeFrom(str);
System.out.println("Original: '" + str + "'");
System.out.println("No Space: '" + noSpaceStr + "'");
}
}
Original: ' Hello, World! '
No Space: 'Hello,World!'
CharMatcher.whitespace().removeFrom(str)
会删除字符串中的所有空白字符。StringBuilder
手动删除空格如果不想使用任何内置方法或第三方库,可以手动遍历字符串的每个字符,并使用StringBuilder
来构建一个新的字符串,跳过空白字符。
public class StringBuilderExample {
public static void main(String[] args) {
String str = " Hello, World! ";
StringBuilder noSpaceStr = new StringBuilder();
for (char c : str.toCharArray()) {
if (!Character.isWhitespace(c)) {
noSpaceStr.append(c);
}
}
System.out.println("Original: '" + str + "'");
System.out.println("No Space: '" + noSpaceStr.toString() + "'");
}
}
Original: ' Hello, World! '
No Space: 'Hello,World!'
StringBuilder
来构建一个新的字符串,跳过空白字符。StringBuffer
手动删除空格StringBuffer
与StringBuilder
类似,都是可变的字符序列。StringBuffer
是线程安全的,而StringBuilder
不是。如果需要在多线程环境中操作字符串,可以使用StringBuffer
。
public class StringBufferExample {
public static void main(String[] args) {
String str = " Hello, World! ";
StringBuffer noSpaceStr = new StringBuffer();
for (char c : str.toCharArray()) {
if (!Character.isWhitespace(c)) {
noSpaceStr.append(c);
}
}
System.out.println("Original: '" + str + "'");
System.out.println("No Space: '" + noSpaceStr.toString() + "'");
}
}
Original: ' Hello, World! '
No Space: 'Hello,World!'
StringBuffer
与StringBuilder
的使用方法类似,但StringBuffer
是线程安全的。StringBuffer
。Character
类判断和删除空格Character
类提供了许多静态方法来判断字符的类型。通过使用Character.isWhitespace()
方法,我们可以判断一个字符是否是空白字符,并决定是否将其添加到新的字符串中。
public class CharacterExample {
public static void main(String[] args) {
String str = " Hello, World! ";
StringBuilder noSpaceStr = new StringBuilder();
for (char c : str.toCharArray()) {
if (!Character.isWhitespace(c)) {
noSpaceStr.append(c);
}
}
System.out.println("Original: '" + str + "'");
System.out.println("No Space: '" + noSpaceStr.toString() + "'");
}
}
Original: ' Hello, World! '
No Space: 'Hello,World!'
Character.isWhitespace(c)
方法可以判断一个字符是否是空白字符。StringBuilder
来构建一个新的字符串,跳过空白字符。Arrays
和StringJoiner
删除空格Arrays
类提供了许多操作数组的静态方法,而StringJoiner
类可以用于拼接字符串。通过将字符串转换为字符数组,过滤掉空白字符,然后再使用StringJoiner
拼接成字符串,可以实现删除空格的效果。
import java.util.Arrays;
import java.util.StringJoiner;
public class ArraysStringJoinerExample {
public static void main(String[] args) {
String str = " Hello, World! ";
StringJoiner noSpaceStr = new StringJoiner("");
Arrays.stream(str.split("\\s+")).forEach(noSpaceStr::add);
System.out.println("Original: '" + str + "'");
System.out.println("No Space: '" + noSpaceStr.toString() + "'");
}
}
Original: ' Hello, World! '
No Space: 'Hello,World!'
Arrays.stream(str.split("\\s+"))
将字符串按照一个或多个空白字符分割成数组,并将其转换为流。StringJoiner
类用于拼接字符串,中间没有分隔符。StringReader
和StringWriter
删除空格StringReader
和StringWriter
是Java I/O库中的类,可以用于读取和写入字符串。通过使用StringReader
读取字符串的每个字符,并使用StringWriter
写入非空白字符,可以实现删除空格的效果。
import java.io.IOException;
import java.io.StringReader;
import java.io.StringWriter;
public class StringReaderWriterExample {
public static void main(String[] args) throws IOException {
String str = " Hello, World! ";
StringReader reader = new StringReader(str);
StringWriter writer = new StringWriter();
int c;
while ((c = reader.read()) != -1) {
if (!Character.isWhitespace(c)) {
writer.write(c);
}
}
String noSpaceStr = writer.toString();
System.out.println("Original: '" + str + "'");
System.out.println("No Space: '" + noSpaceStr + "'");
}
}
Original: ' Hello, World! '
No Space: 'Hello,World!'
StringReader
类用于读取字符串的每个字符。StringWriter
类用于写入非空白字符。StringWriter
写入非空白字符,可以实现删除空格的效果。Scanner
类删除空格Scanner
类可以用于解析字符串。通过使用Scanner
类读取字符串的每个字符,并跳过空白字符,可以实现删除空格的效果。
import java.util.Scanner;
public class ScannerExample {
public static void main(String[] args) {
String str = " Hello, World! ";
Scanner scanner = new Scanner(str);
StringBuilder noSpaceStr = new StringBuilder();
while (scanner.hasNext()) {
noSpaceStr.append(scanner.next());
}
System.out.println("Original: '" + str + "'");
System.out.println("No Space: '" + noSpaceStr.toString() + "'");
}
}
Original: ' Hello, World! '
No Space: 'Hello,World!'
Scanner
类可以用于解析字符串,并跳过空白字符。Scanner
类读取字符串的每个字符,并跳过空白字符,可以实现删除空格的效果。BufferedReader
和BufferedWriter
删除空格BufferedReader
和BufferedWriter
是Java I/O库中的类,可以用于高效地读取和写入字符。通过使用BufferedReader
读取字符串的每个字符,并使用BufferedWriter
写入非空白字符,可以实现删除空格
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。