【问题标题】:How can I find int values within a string如何在字符串中找到 int 值
【发布时间】:2013-06-09 04:29:21
【问题描述】:

我有一个字符串,例如"ksl13<br>m4n",我想删除所有非数字字符以获得 int 134。

Integer.parseInt(s) 显然是行不通的,但不知道该怎么办。

【问题讨论】:

标签: java string parsing int parseint


【解决方案1】:

您可以先使用正则表达式:

String s = "ksl13 m4n";
String clean = s.replaceAll("\\D+",""); //remove non-digits

那么你可以使用Integer.parseInt:

int i = Integer.parseInt(clean);

i 将是134

【讨论】:

  • @FraserPrice \\D+ 将删除不属于以下项之一的任何内容:0123456789
  • 真的! \\D+ 等价于[a-z|A-Z],表示替换除小数以外的所有字符?
  • @Azad \\D+ 等价于[^0-9]+
【解决方案2】:

如果你不想使用正则表达式,你可以这样做:

private String buildNumber(String str) {
    StringBuilder strBuilder = new StringBuilder();
    for (int i = 0; i < str.length(); i++) {
        char ch = str.charAt(i);
        if(Character.isDigit(ch)) 
            strBuilder.append(ch);
    }
    return strBuilder.toString();
}

然后您可以使用Integer#parseInt 将其转换为int

有关更多信息,请参阅 StringBuilderCharacter

【讨论】:

  • 只是一个旁注,Character.isDigit 比正则表达式中的\d 更广泛,因为它可以匹配国际数字字符 (source)。
  • 确实如此。如果这很重要,他可以使用 &gt;'0' &amp;&amp; &lt;'9' 轻松检查 0-9 数字。
【解决方案3】:

字符串 str = "ksl13 m4n";
字符串 strArray[] = str.split("\D+");将为您提供整数值数组

【讨论】:

    猜你喜欢
    • 2012-05-03
    • 2012-11-26
    • 1970-01-01
    • 2018-08-05
    • 2017-03-08
    • 1970-01-01
    • 1970-01-01
    • 2016-09-14
    • 2016-02-16
    相关资源
    最近更新 更多