【问题标题】:How to detect urls in scala [closed]如何检测scala中的网址[关闭]
【发布时间】:2013-05-18 18:03:33
【问题描述】:

您好,例如有包含内容和 url 的文件。我只想要 url 的内容 scala 中有没有检测器。请建议我任何想法。提前致谢

【问题讨论】:

    标签: scala


    【解决方案1】:

    我不确定我是否理解正确,但您可以尝试自己编写。看看this 的帖子。创建正确的正则表达式后,您可以这样做(代码假定 url 与内容的其余部分位于不同的行中):

    val URL = """(http|ftp)://(.*)\.([/a-z]+)""".r
    def splitURL(url: String) = url match {
      case URL(protocol, domain, tld) => println((protocol, domain, tld))
      case _ => ; // skip
    }
    
    val f = new File("file.txt")
    val lines = scala.io.Source.fromFile(f).getLines()
    
    lines foreach (splitURL)
    

    这只是一个提示。您可能需要针对您的特定情况进行更多定制。

    编辑:

    您可能需要更高级的正则表达式。看看记者的回答

    【讨论】:

      【解决方案2】:

      对于这个问题和许多其他问题:您可以使用Java 的解决方案。

      How to detect the presence of URL in a string.

      import java.net.URL; import util.Try
      
      val text = "abc http://stackoverflow.com stackoverflow.com http blah-blah-blah"
      
      text.split{"""\s+"""}.map{ s => Try { new URL(s) } }.flatMap{ _.toOption }
      //Array[java.net.URL] = Array(http://stackoverflow.com)
      

      【讨论】:

      • 您可能要考虑使用 java.net.URI,而不是 java.net.URL。 URL 有一些病态的行为。例如,hashCode 和 equals 等方法建立传出网络连接。
      【解决方案3】:

      关于这个话题阅读Extract URL from string。不管你想使用哪种编程语言,问题总是一样的。我在 2011 年遇到了同样的挑战,我采用了已接受答案中发布的方式(据我所知,稍作修改)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-07-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多