任何人都可以帮我使用正则表达式,我有一个电话字符串,我想删除除数字和“+”之外的所有字符,我该怎么办呢?
答案 0 :(得分:5)
答案 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();
}