2015-04-02 94 views
-3

如何比较2个特殊字符的字符串? 我有如下字符串,我可以知道如何比较两者吗?比较在特殊字符的jave中的2个字符串

strA = "AC-11234X-DD+++1" 
strB = "AC-11234X-DD+++1" 

我测试matches()equals()equalsIgnoreCase()都不能正常工作。

if (strA.matches(strB)){ 
... 
} else { 
.. 
} 
+4

'的System.out.println (“AC-11234X-DD +++ 1”.equals(“AC-11234X-DD +++ 1”));'打印'true'。究竟是什么问题? – JonK 2015-04-02 08:27:28

+0

这里没有*特殊*字符..'equals()'将完成作业 – TheLostMind 2015-04-02 08:27:45

+0

在这里使用equals。 – Brunaldo 2015-04-02 08:28:55

回答

-1

此代码检查,如果这两个字符串相等或不

String strA = "AC-11234X-DD+++1" ; 
String strB = "AC-11234X-DD+++1";  

if(strA.equals(strB)) 
     //they are equal 
else 
     //they are not 
+1

我不确定你是否看过这个问题,OP明确说'equals()'不适合他,需要先理解* why,但他已经尝试过了。 – amit 2015-04-02 08:28:09

+0

@amit我读的问题的字符串是相同的,所以他/她可以使用equals方法来检查字符串是否相等,我没有看到你的compareTo或其他任何需要:) – Arlind 2015-04-02 08:33:19

+0

@Arlind well said ur right – abhi 2015-04-02 08:36:07

0

你为什么不尝试

的System.out.println(strA.hashCode()== strB.hashCode ());

如果matches(),equals(),equalsIgnoreCase()不起作用。

如果您对此结果不满意,您可以尝试覆盖compareTo方法并拥有自己的逻辑。

+1

哈希不保证是唯一的,它们对于不同的字符串可以是相同的,比如''Aa''和''BB“'所以'strA.hashCode()== strB.hashCode()'不是最好的方法。 – Pshemo 2015-04-02 08:57:02

-1
public static void main(String[] args) 
{ 
    String strA = "AC-11234X-DD+++1"; 
    String strB = "AC-11234X-DD+++1"; 

    System.out.println(strA.equals(strB)); 
    } 

这很好用。

+1

“是否适用于我”答案有效?(http://meta.stackexchange.com/questions/118992/are-works-for-me-answers-valid) – Pshemo 2015-04-02 08:52:38

-1

必须使用compareTo方法。

通过此方法返回的值是一个INT

  • 如果是> 0意味着,第二串之前按字母顺序
  • 第一,如果它是= 0指的是两个串是平等的;
  • 如果是< 0表示最前一页字符串之前关于你的问题可能是出在按字母顺序排列第二

一个例子(很粗糙):

int r = A.compareTo(B); 

if(r > 0) { 
    System.out.println("B comes before A in alphabetical order"); 
} else if(r < 0) { 
    System.out.println("A comes before B string in alphabetical order"); 
} else { 
    System.out.println("The two strings are equal"); 
} 
+1

“*必须使用compareTo方法。*”为什么?如果字符串相等,这应该与'equals'一起工作,不需要'compareTo'。 – Pshemo 2015-04-02 09:00:41