如何从非字母数字字符中清除字符串,但保留某些字符



我有一个非字母数字字符的字符串,这个字符串包含英语和非英语字母。我需要清除非字母数字字符中的字符串,但我想保留其中一些字符。例如:假设我只想保留逗号和冒号。

示例:String st = "I, Love: ( Coding {}+-), codificación"

我希望输出为"I,Love:Coding,codificación"

有正则表达式可以做到这一点吗?

请注意,下面的方法将清除所有非字母数字字符中的文本。

public static String cleanText(String text) {
return text.replaceAll("\P{LD}+", "");
}

您可以使用

public static String cleanText(String text) {
return text.replaceAll("[^\p{L}\p{N}:,]+", "");
// or return text.replaceAll("[^\p{LD}:,]+", "");
}

详细信息

  • [^-否定字符类的开始
    • p{L}-任何Unicode字母
    • p{N}-任意数字
    • :-冒号
    • ,-逗号
  • ]+-字符类的末尾,重复一次或多次

请参阅regex演示。查看Java演示:

import java.util.*;
import java.io.*;
class Test
{
public static void main (String[] args) throws java.lang.Exception
{
String st = "I, Love: ( Coding {}+-), codificación";
System.out.println(cleanText(st));
}
public static String cleanText(String text) {
return text.replaceAll("[^\p{L}\p{N}:,]+", "");
}
}
// => I,Love:Coding,codificación

相关内容

  • 没有找到相关文章

最新更新