【问题标题】:Java: getting parameters from a URI who contains a fileJava:从包含文件的 URI 获取参数
【发布时间】:2011-06-22 11:39:44
【问题描述】:

假设我有一个文件位于:

http://example.com/123.app

现在我使用以下方式获取文件名(u 是一个完整的 url 字符串):

String fileName = u.substring( u.lastIndexOf('/')+1, u.length() );

但我想把相同的文件名也放在参数上,所以它看起来像这样:

http://example.com/123.app?id=87983

我想要一个包含“123.app”的字符串文件名,以及包含“87983”和可能更多参数的字符串id。

我将如何实现这一目标?

【问题讨论】:

    标签: java string


    【解决方案1】:

    首先,看看这篇文章,它使用 URL 类使处理 URL 字符串的不同部分变得更加容易。

    Could you share a link to an URL parsing implementation?

    其次,您需要获取 URL 的 Query 部分和 URL 的 Path 部分,并对返回的值进行子串化以获得所需的信息。它应该很简单。

    【讨论】:

      【解决方案2】:

      使用URI的API!这就是它的用途。忘记所有这些子字符串/正则表达式/吐出的东西。

      【讨论】:

        【解决方案3】:

        你需要对字符串使用 split 方法。因此,例如在您的文件名字符串上

        String[] mystrings = fileName.split("?");
        

        那么 mystrings[0] 是你的文件名,mystrings[1] 是你的参数

        【讨论】:

          【解决方案4】:

          一个简单的方法是:重复子串:

          int qidx = filename.indexOf("?");
          String realFilename = filename.substring(0, qidx);
          String parameters = filename.substring(qidx+1);
          

          解析参数等等。

          如果您正在编写 servlet,请尝试:

          String fileName = request.getServletPath(); 
          

          对于像

          这样的参数
          String id = request.getParameter("id");
          

          【讨论】:

            【解决方案5】:

            试试这个正则表达式

                String s = "http://example.com/123.app?id=87983";
                String[] split = s.split(".*/|\\?id=");
                String filename = split[1];
                String id = (split.length == 3) ? split[2] : null;
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-05-10
              • 2012-07-07
              • 2014-06-06
              • 2023-03-09
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多