我有一个例子.
public class Test {
public static void main(String[] args) {
String a="VIJAY KAKADE";
String b="VIJAY KAKADE";
if(a.equalsIgnoreCase(b)){
System.out.println("yes");
}else{
System.out.println("no");
}
}
}
Run Code Online (Sandbox Code Playgroud)
我需要检查这些字符串而不考虑空格.我该如何实现这一目标?在比较字符串时,如何忽略字符串中的空格?
NIN*_*OOP 30
您可以尝试通过替换所有空格来创建新字符串.
if(a.replaceAll("\\s+","").equalsIgnoreCase(b.replaceAll("\\s+",""))) {
// this will also take care of spaces like tabs etc.
}
Run Code Online (Sandbox Code Playgroud)
然后比较.
Zol*_*tán 16
我认为用空字符串替换所有空格会导致验证以下情况的危险(找到两个相同的名称):
String a = "ANN MARIE O'RIORDAN"
String b = "ANNMARIE O'RIORDAN"
Run Code Online (Sandbox Code Playgroud)
我知道我可能会在这里分裂,但我在寻找类似的解决方案以在单元测试中验证SQL查询时发现了这个问题.因为我的查询是多行的static final Strings,所以我想确保我没有错过任何地方的空间.
为此,我想用一个空格替换所有空格,或者特殊字符是最安全的解决方案-这则确实需要正则表达式:
if (a.trim().replaceAll("\\s+", " ").equalsIgnoreCase(b.trim().replaceAll("\\s+", " "))) {
// Strings equivalent
}
Run Code Online (Sandbox Code Playgroud)
思考?
sev*_*rce 13
正如佐尔坦正确指出的那样,除了他之外的所有答案实际上都是错误的.
为了使用第三方库的功能,我建议hamcrest:
import static org.hamcrest.text.IsEqualIgnoringWhiteSpace.equalToIgnoringWhiteSpace;
public class Main {
public static void main(String[] args) {
String a = "VIJAY KAKADE";
String b = "VIJAY KAKADE";
System.out.print(String.format("'%s' and '%s' matching: ", a, b));
if (equalToIgnoringWhiteSpace(a).matches(b)) {
System.out.println("yes");
} else {
System.out.println("no");
}
String c = "VIJAYKAKADE";
System.out.print(String.format("'%s' and '%s' matching: ", a, c));
if (equalToIgnoringWhiteSpace(a).matches(c)) {
System.out.println("yes");
} else {
System.out.println("no");
}
}
}
Run Code Online (Sandbox Code Playgroud)
收益:
'VIJAY KAKADE' and 'VIJAY KAKADE' matching: yes
'VIJAY KAKADE' and 'VIJAYKAKADE' matching: no
Run Code Online (Sandbox Code Playgroud)
Roh*_*ain 12
用空字符串替换空格:
if (a.replace(" ", "").equalsIgnoreCase(b.replace(" ", "")))
Run Code Online (Sandbox Code Playgroud)