【问题标题】:Regex to delete all characters after space // Android Java正则表达式删除空格后的所有字符 // Android Java
【发布时间】:2019-03-12 07:02:40
【问题描述】:

我尝试使用 RegEx 将以下字符串 1.00 h. 转换为 1.00,但我是新手,需要您的帮助。我试过如下

seanceLengthValue = Integer.parseInt(
currentService.getSeanceLength().replaceAll("\\D\\w+",""));

【问题讨论】:

  • 转换以下字符串“1.00 h”。使用 RegEx 到 1.00 -> 即使您获得 1.00,它仍然无法正常工作。无法将 1.00 解析为 int。
  • @Evgeny Ladyzhenskiy:有任何答案对你有用吗?如果是,请考虑接受/支持他们。 What should I do when someone answers my question?

标签: java android regex


【解决方案1】:

只需匹配/保留/捕获第一个非空白字符并将表达式锚定到开头:

^(\S+)

参见a demo on regex101.com(在Java 中,您需要转义反斜杠,使其有效地变为^(\\S+))。

【讨论】:

    【解决方案2】:

    你可以简单地使用:

    seanceLengthValue = Double.parseDouble(
                currentService.getSeanceLength().replaceAll(" [a-zA-Z]", "");
    

    在这里,我们将所有出现的字母和空格替换为""。此外,由于生成的字符串将是 double,因此您需要使用 Double.parseDouble() 进行转换。

    【讨论】:

      【解决方案3】:

      你可以这样做

      String str = "1.00 h";
      Pattern p = Pattern.compile("^(\\S+)");
      Matcher m = p.matcher(str);
      m.find();
      Log.i("Findings", "value is >>" + m.group(0) + "<<");
      

      这将为您提供空格之前的所有内容。

      现在,当您解析时,它需要以 float 或 double 进行解析,因为它具有浮点值。

      seanceLengthValue = Float.parseFloat(m.group(0)); 
      

      注意:如果有多个空格,它仍然会只给出第一次出现。

      例如;如果字符串是“1.00 h 2.00 f”;它只会给出“1.00”。

      【讨论】:

        【解决方案4】:

        试试这个模式:(\d*\.\d+|\d+)

        它使用交替来让你匹配各种类型的十进制数字格式:

        \d*\.\d+ 将匹配零个或多个数字 \d,点字面意思是 \.,然后是一个或多个数字 \d+,因此它将匹配 1.0、.01 等。

        \d+ - 匹配一个或多个数字,以防有小数分隔符。

        Demo

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-09-08
          • 2021-01-24
          • 1970-01-01
          • 2019-06-21
          • 2019-01-09
          • 2018-11-20
          • 2021-11-29
          相关资源
          最近更新 更多