民间,

我对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: [* 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 "]"

关于java - Java中的字符串比较,不带空格,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12384969/

10-08 22:29