[英]String comparison in Java without spaces
伙計們,
我對Java中的String比較(中間有空格)有些懷疑。
用例:-
考慮以下Solr查詢字符串:
String query = ".....&ansDt:[* TO *]....";
ansDt的有效格式為:-
ansDt : [* TO *]
ansDt : [someDate TO *]
ansDt : [* TO someDate]
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);
檢查yourString
的indexOf("*")
,如果不是-1
,則格式為1,2或3。但是有很多錯誤情況,您必須檢查NPE。
您將需要比簡單的正則表達式更復雜的東西。 您已經寫了四行語法。 您應該采用解析器生成器將采用的方法:將其標記化,然后執行規則以查看標記是否與您的語法匹配。
如果您能忍受解析器生成器的強大功能,我建議您使用ANTLR。
這應該做(對於字符串s1
和s2
):
s1.replace(" ", "").equals(s2.replace(" "), ""))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.