簡體   English   中英

Java中的字符串比較,不帶空格

[英]String comparison in Java without spaces

伙計們,

我對Java中的String比較(中間有空格)有些懷疑。

用例:-
考慮以下Solr查詢字符串:

  String query = ".....&ansDt:[* TO *]....";

ansDt的有效格式為:-

  1. ansDt : [* TO *]
  2. ansDt : [someDate TO *]
  3. ansDt : [* TO someDate]
  4. ansDt : [someDate TO otherDate]

我有兩個懷疑:

  • 現在,我需要一種方法來僅檢查4th ansDt格式的查詢字符串。 如果遇到其他格式(簡而言之,如果在ansDt字段中遇到任何*模式),我需要在控制台上拋出一些消息。

  • 另外,無論ansDt:[之間有空格,我都需要檢查第一種, ansDt和第三種情況。 ansDt: [* TO *]ansDt :[* TO *]ansDt : [ * TO *]等均被視為相同

我不能使用String.trim( )因為它將僅刪除字符串的開頭和結尾空格

如何使用Java字符串比較進行檢查?

謝謝

請嘗試此正則表達式:

String query = ".....&ansDt:[* TO *]....";

String pattern = ".*ansDt[\\ ]*[:][\\ ]*[\\[].*[\\ ]+TO[\\ ]+.*[\\]].*"; 

boolean test = query.matches(pattern);

附加信息:

. matches any character

.* matches any amount of characters

[\ ] matches space

[\ ]+ matches one or more spaces, used between "TO"

[\ ]* matches any amount of spaces, used between ":"

[\[] and [\]] matches "[" and "]"

正則表達式是必經之路。 但是為了快速解決問題,您可以嘗試

    String query = ".....&ansDt : [ * TO *]...."; 
    int indexOfansDt = query.indexOf("ansDt");
    int indexOfBeginBracket = query.indexOf("[",indexOfansDt);
    int indexOfEndBracket = query.indexOf("]",indexOfBeginBracket);
    String yourString = query.substring(indexOfBeginBracket, indexOfEndBracket+1);
    System.out.println(yourString);

檢查yourStringindexOf("*") ,如果不是-1 ,則格式為1,2或3。但是有很多錯誤情況,您必須檢查NPE。

您將需要比簡單的正則表達式更復雜的東西。 您已經寫了四行語法。 您應該采用解析器生成器將采用的方法:將其標記化,然后執行規則以查看標記是否與您的語法匹配。

如果您能忍受解析器生成器的強大功能,我建議您使用ANTLR。

這應該做(對於字符串s1s2 ):

s1.replace(" ", "").equals(s2.replace(" "), ""))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM