我有一个非常奇怪的 String.matches 行为:
requestString.matches(".*")
(boolean) false
而 requestString 类似于
“HTTP/1.1 200 OK - OK
[...]
Content-Type: text/xml; Charset=iso-8859-1
Content-Length: 1545”
+ 更多...
当然,我想针对 "HTTP/\\d\\.\\d" 进行测试,但显然这失败了八次: requestString.matches("HTTP/\\d\\.\\d")
requestString 中的字符串通过 Socket 连接进来,并以 iso-8859-1 编码发送。这是代码,
StringBuilder result = new StringBuilder();
int ch;
while ( ! timeoutExceeded() && (ch = reader.read()) != -1) {
result.append((char)ch);
}
String requestString = result.toString()
该代码在android sdk上运行。我错过了什么?编码有问题吗?
解决方案:感谢提示我尝试了 DotAll 标志(再次!)并且它有效:
requestString.matches("(?s).*HTTP/\\d\\.\\d.*")