Compare Strings While Ignoring Whitespace in Java – 在Java中比较字符串,同时忽略空白处

最后修改: 2021年 11月 18日

中文/混合/英文(键盘快捷键:t)

1. Overview

1.概述

In this short tutorial, we’ll see how to compare strings while ignoring whitespace in Java.

在这个简短的教程中,我们将看到如何在Java中进行比较字符串,同时忽略空白处

2. Use replaceAll() Method

2.使用replaceAll()方法

Suppose we have two strings – one containing spaces in it and the other containing only non-space characters:

假设我们有两个字符串,一个包含空格,另一个只包含非空格字符。

String normalString = "ABCDEF";
String stringWithSpaces = " AB  CD EF ";

We can simply compare them while ignoring the spaces using the built-in replaceAll() method of the String class:

我们可以使用String类的内置replaceAll()方法简单地进行比较,同时忽略空格。

assertEquals(normalString.replaceAll("\\s+",""), stringWithSpaces.replaceAll("\\s+",""));

Using the replaceAll() method above will remove all spaces in our string, including non-visible characters like tab, \n, etc.

使用上面的replaceAll()方法将删除我们字符串中的所有空格,包括不可见的字符,如tab,\n,等等。

In addition to \s+, we can use \s.

除此之外,我们还可以使用 `s+ `s

3. Use Apache Commons Lang

3.使用Apache Commons Lang

Next, we can use the StringUtils class from the Apache Commons Lang library to achieve the same goal.

接下来,我们可以使用Apache Commons Lang库中的StringUtils类来实现同样的目标。

This class has a method deleteWhitespace(), which is used to delete all spaces in a String:

这个类有一个方法deleteWhitespace(),它被用来删除String中的所有空格。

assertEquals(StringUtils.deleteWhitespace(normalString), StringUtils.deleteWhitespace(stringWithSpaces));

4. Use the StringUtils Class of Spring Framework

4.使用Spring框架的StringUtils

Finally, if our project is already using Spring Framework, we can use the StringUtils class from the org.springframework.util package.

最后,如果我们的项目已经在使用Spring框架,我们可以使用org.springframework.util包中的StringUtils类。

The method to use this time is trimAllWhitespace():

这次要使用的方法是trimAllWhitespace()

assertEquals(StringUtils.trimAllWhitespace(normalString), StringUtils.trimAllWhitespace(stringWithSpaces));

We should keep in mind that if we want to compare strings where spaces have a meaning, like people’s names, we shouldn’t use the methods in this article. For example, the following two strings will be considered equal: “JACKIE CHAN” and “JAC KIE CHAN” and this may not be what we actually want.

我们应该记住,如果我们想比较空格有意义的字符串,比如人名,我们不应该使用本文中的方法。例如,以下两个字符串将被视为相等:”JACKIE CHAN “和 “JAC KIE CHAN”,这可能不是我们实际想要的。

5. Conclusion

5.总结

In this article, we’ve seen different ways to compare strings while ignoring whitespace in Java.

在这篇文章中,我们已经看到了在Java中忽略空白的情况下比较字符串的不同方法

As always, the example code from this article can be found over on GitHub.

一如既往,本文中的示例代码可以在GitHub上找到over