网址,扫描器及;分隔符:这个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。您的意思是它将作为第一个返回空字符串?