【问题标题】:Get specific words from a string in Java从Java中的字符串中获取特定单词
【发布时间】:2019-05-17 02:43:44
【问题描述】:

如果我有以下网址:

http://www.example.com/wordpress/plugins/wordpressplugin/123/ver=1.0

如何获取插件的名称(在 URL 中简单命名为 wordpressplugin)和版本,以便输出为 - wordpressplugin ver 1.0?

【问题讨论】:

  • 使用分割功能
  • 你想从哪里得到这个“字符串”——你是使用 spring boot 还是任何其他 mvc 框架? - 你的动机是什么,你为什么要这样做。有多种方法可以做到这一点。您可以使用正则表达式,如果您使用 mvc 框架,很可能会有一些工具可以帮助您。但最后,发布您的动机总是好的,因为根据您的问题,在不知道您的动机的情况下,并非每个解决方案都适合
  • 网址是否总是具有相同的结构?插件名称总是紧跟在example.com/wordpress/plugins 之后吗?
  • Emre Savcı - 我很确定是的。

标签: java regex string substring


【解决方案1】:

您可以这样做,使用 Java 中的正则表达式支持。

String url = "http://www.example.com/wordpress/plugins/wordpressplugin/123/ver=1.0";
Pattern pattern = Pattern.compile("(.*plugins/)(.*)(/\\d{3}/)(ver.*)");
Matcher matcher = pattern.matcher(url);
if (matcher.matches()) {
    System.out.println("Plugin: " + matcher.group(2));
    System.out.println("Version: " + matcher.group(4));
}

注意捕获组的使用。这是输出。

Plugin: wordpressplugin
Version: ver=1.0

【讨论】:

    【解决方案2】:

    PS:当且仅当您的 url 格式始终保持不变时,这才有效!

    解决这个问题最快的方法是利用Strings的split方法。仔细研究一下下面的方法,很基础。

        public String getVersionNumber(String url){
    
            String[] arr0 = url.split("//");
            //The code above returns an array of two strings: "http:" and "www.example.com/wordpress/plugins/wordpressplugin/123/ver=1.0"
    
            String[] arr1 = arr0[1].split("/");
            //The code above returns an array of six strings: "www.example.com", "wordpress", "plugins", "wordpressplugin", "123" and "ver=1.0".
    
            return String.format("%s %s", arr1[3], arr1[5]);
            //OUTPUT: wordpressplugin ver=1.0
            //I simply returned what I needed.
        }
    

    我希望这会有所帮助.. 编码愉快!

    【讨论】:

      【解决方案3】:

      我正在发布我的评论作为答案

      String s = "http://www.example.com/wordpress/plugins/wordpressplugin/123/ver=1.0";
      String[] ary = s.split("/"); 
      System.out.println(ary[5] + " " + ary[7]); 
      

      根据您的问题,这是最简单的方法, 您必须使用正则表达式进行更动态的搜索。

      【讨论】:

      • 我尚未测试/验证您的答案,但我有点怀疑这是否会引发异常。 ary[1] 显然是空的。这就是为什么我在自己的回答中对此很谨慎。
      【解决方案4】:

      因为你声称是 JAVA 新手,所以这里有一个非常简单的答案,应该适合你的技能

      String url = "http://www.example.com/wordpress/plugins/wordpressplugin/123/ver=1.0";
      String search = "plugins/";
      int index = url.indexOf(search);
      String pluginName, version;
      
      if (index > -1)
      {
          index += search.length;
          pluginName = url.substring(index, url.indexOf("/",index + 1));
      
          search = "ver=";
          index = url.indexOf(search);
      
          if (index > -1)
          {
             version = url.substring(index + search.length);
      
             System.out.prinln(pluginName + " " + version);
          }
      }
      

      【讨论】:

      • 这个问题是用java标记的,请纠正它
      • 感谢@Dixit,我将其更改为 JAVA(而不是 JS)。如果 url 结构是固定的,请使用 His 解决方案(此用例的更好更快的解决方案)。我的方法更长,但也更灵活(如果需要)。
      【解决方案5】:

      您应该查看Regular Expressions (in Oracle tutorials),它是任何编程语言中用于从较大字符串(遵循某种或多或少的固定格式)中获取/匹配子字符串的通用工具。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-10-03
        • 1970-01-01
        • 1970-01-01
        • 2010-09-20
        • 2019-09-13
        • 1970-01-01
        • 2022-11-23
        相关资源
        最近更新 更多