从字符串中删除除数字和" +"之外的所有字符。字符

时间:2014-12-24 11:33:23

标签: java regex

任何人都可以帮我使用正则表达式,我有一个电话字符串,我想删除除数字和“+”之外的所有字符,我该怎么办呢?

5 个答案:

答案 0 :(得分:5)

[^0-9+]

替换为empty string。请参阅演示。

https://regex101.com/r/gQ3kS4/32

答案 1 :(得分:1)

您可以将matcher.replaceAll()[^\d+]一起用作正则表达式。 E.g。

import java.util.regex.Pattern;

public class Y {
    private static final Pattern pattern = Pattern.compile("[^\\d+]");
    public static void main(String[] args) {

        System.out.println(replaceAll("+123ads9"));
        System.out.println(replaceAll("+123ad+s9"));
    }

    private static String replaceAll(String s) {

        return pattern.matcher(s).replaceAll("");
    }
}


Input +123ads9
Output +1239

Input +123ad+s9
Output +123+9

答案 2 :(得分:1)

在这里,您可以使用String.replaceAll

String phoneStr = "+81 90-1239-9119";
String phoneStrCleaned = phoneStr.replaceAll("[^\\d+]", "");

答案 3 :(得分:0)

请尝试以下代码:

String test = "+81 90-1239-9119";
String result = test.replaceAll("[^\\d+]", "");
System.out.println(result);

输出

+819012399119

这里的重点是使用Regular Expressions,使用空字符串number获取非+replace""的所有内容。有关Regular Expressions访问this链接的更多信息。

答案 4 :(得分:0)

为什么它必须始终是正则表达式?除了占用太多内存和运行时,我发现语法不那么直观。

public static String getNumber(CharSequence input)
{
    if (input == null)
    {
        return "";
    }
    final int len = input.length();

    if (len == 0)
    {
        return "";
    }

    final StringBuilder sb = new StringBuilder();

    int pos = 0;
    char ch;

    while (pos < len)
    {
        ch = input.charAt(pos);
        if (Character.isDigit(ch))
        {
            sb.append(ch);
        }
        else if (ch == '+')
        {
            sb.append(ch);
        }

        pos++;
    }

    return sb.toString();
}