网址,扫描器及;分隔符:这个Java代码行是如何工作的?
有人能帮我理解这行代码是如何工作的吗网址,扫描器及;分隔符:这个Java代码行是如何工作的?,java,url,java.util.scanner,delimiter,Java,Url,Java.util.scanner,Delimiter,有人能帮我理解这行代码是如何工作的吗 String s = new Scanner(new URL("http://example.com").openStream(), "UTF-8").useDelimiter("\\A").next(); 代码用于直接从网页中读取。 扫描器对象转换为字符串的具体方式以及我们使用分隔符的原因 谢谢。扫描仪未“转换”。在新创建的实例上,调用useDelimiter,它返回一个具有相应delimiter属性设置的扫描仪实例,然后在该实例上调用next,它返回一
String s = new Scanner(new URL("http://example.com").openStream(), "UTF-8").useDelimiter("\\A").next();
代码用于直接从网页中读取。
扫描器对象转换为字符串的具体方式以及我们使用分隔符的原因
谢谢。扫描仪未“转换”。在新创建的实例上,调用useDelimiter
,它返回一个具有相应delimiter属性设置的扫描仪实例,然后在该实例上调用next
,它返回一个字符串
您可能希望在Java文档中查找扫描仪,以便进一步阅读:
以下是滥用缩进的情况
new Scanner( // A new scanner is created
new URL("http://example.com") // the scanner takes a Stream
// which is obtained from a URL
.openStream(), // - openStream returns the stream
"UTF-8") // Now the scanner can parse the
// stream character by character
// with UTF-8 encoding
.useDelimiter("\\A") // Now the scanner set as
// delimiter the [Regexp for \A][1]
// \A stands for :start of a string!
.next(); // Here it returns the first(next)
// token that is before another
// start of string.
// Which, I'm not sure
// what it will be
一个简单的文本扫描器,可以使用正则表达式解析原语类型和字符串。
扫描器使用定界符模式将其输入拆分为标记,默认情况下,定界符模式匹配空白。然后,可以使用各种后续方法将生成的令牌转换为不同类型的值
所以您只是将\A
替换为分隔符(而不是空格)。
但是\A
如果您的流仅包含以下文本
\世界啊\再见\A
您的代码将返回整行代码。\Ahello world\再见\A
如果您想在反斜杠后跟大写字母a的序列上删除,则应使用\\\\a
感谢@Faux Pas指出这一点 添加到Kuzeko的答案中,\A与全文开头匹配。因此,我认为他的“hello world”示例是无效的。它不是“转换的”。next()
方法返回一个字符串。看看Scanner的JavaDoc。您的意思是它将作为第一个返回空字符串?