【问题标题】:How to get the string between two numbers in Java? [duplicate]如何在Java中获取两个数字之间的字符串? [复制]
【发布时间】:2022-01-22 19:39:23
【问题描述】:

可能重复:
How to check that the string contains the number format in Java?

假设我有一个格式如下的字符串:

string1 = "1. Stack Overflow 2. Google 3. Reddit"

如何找出数字之间的子串?

【问题讨论】:

  • -1 表示完全没有努力。
  • @MattBall 我支持。
  • 有些人不知道寻求帮助的正确方式,有些人对此怀有敌意。这两种方法同样无知。

标签: java string


【解决方案1】:

字符串拆分功能在这里也可以正常工作:

String test = "1. Stack overflow 2. Google";
String[] test2 = test.split("\\d\\.");
  • test2[0] 将是 " Stack overflow"
  • test2[1] 将是 " Google"

您可以使用test2[0].trim() 去掉多余的空格。

【讨论】:

    【解决方案2】:

    遍历String的每个字符,看看它的数字是否标记开始索引并在末尾标记结束索引并执行substring

    *使用方法*

    【讨论】:

    • 我们不是代码工厂。我在这个答案中给出的不仅仅是代码:)
    【解决方案3】:

    您可以使用正则表达式和捕获组:

    String str = "1. Stack overflow 2. Google";
    Matcher m = Pattern.compile("\\d\\. (.*?) \\d").matcher(str);
    
    if (m.find())
        System.out.println(m.group(1));    // Prints "Stack overflow"
    

    IDEONE.com demo

    【讨论】:

    • 这里的 m.group(1) 中的“1”是什么意思?如何获取谷歌
    • m.group(1) 返回与(.*?) 对应的匹配部分。如果您想对此进行谷歌搜索,请搜索正则表达式捕获组(或阅读例如here。)
    【解决方案4】:

    试试String.split()

    String[] s = string.split("[0-9]+. ", String1);
    

    将产生数组:

    {"Stack overflow ", "Google"}
    

    你可以从中获得任何你想要的字符串。为了更好,您可能想要trim() 拉出的字符串。

    【讨论】:

    • String1 是您在问题中指定的内容。
    【解决方案5】:

    我不会做你的作业。你没有做出任何努力。看看这个简单的方法。在您的代码中实现它并对其进行修改,使其适合您的问题。

    public boolean isInteger( String input )  
        {  
           try  
           {  
              Integer.parseInt( input );  
              return true;  
           }  
           catch( Exception )  
           {  
              return false;  
           }  
        }  
    

    【讨论】:

      【解决方案6】:

      你可以用正则表达式来做到这一点:

      Pattern p = Pattern.compile("\\d+\\. (\\D+)\\d");
      Matcher m = p.matcher(str);
      if (m.find()) 
          System.out.println(m.group(1));
      

      【讨论】:

      • 或者一行:str.replaceAll("^.*?\\d+\\.", "").replaceAll(" \\d.*", "")
      【解决方案7】:

      匹配上面例子的正则表达式是

      \d+\.\s(\D+)\d\.
      

      为了您的方便而转义。

      这将捕获数字(和点)之间的文本作为匹配组 1。

      【讨论】:

        猜你喜欢
        • 2015-10-09
        • 1970-01-01
        • 1970-01-01
        • 2012-09-17
        • 1970-01-01
        • 2022-12-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多