我想删除字符串中除了字符a-z、A-Z和0-9以外的所有字符,因此我需要为Java的string.replaceAll(regex, "");创建一个正则表达式旧的字符串看起来像这样:
string.replaceAll(regex, "");
MAX EUK_1334-PP/B+
新的字符串应该如下所示:
MAXEUK1334PPB
du7egjpx1#
可能有一个更简洁的正则表达式,但这肯定会起作用:
string.replaceAll("[^a-zA-Z0-9]", "");
zengzsys2#
string.replaceAll("[^a-zA-Z0-9]+", "");
f0brbegy3#
String test = "MAX EUK_1334-PP/B+"; test = test.replaceAll("[\\W_]", ""); System.out.println(test + "\n");
打印结果:
j7dteeu84#
有些人忘记了“_”字符:String regex = "[_\\W]";
String regex = "[_\\W]";
public class RegexFun2 { public static void main(String[] args) { String test = "MAX EUK_1334-PP/B+"; String regex = "[_\\W]"; String result = test.replaceAll(regex, ""); System.out.println(result); } }
但我仍然认为OP是欺骗自己,没有证明他首先尝试,并张贴在他原来的问题他的尝试。
toe950275#
几乎与OP相同,我尝试了Ramda
const filteredString = R.replace (/[^a-zA-Z0-9 "-/]/g, '');
删除除字符以外的所有内容(加上:“-/)。奇怪的是,如果没有使用构造函数,这个正则表达式并没有删除点(.)。其他一切都像一个魅力。因此,对于OP应该是
const filteredString = R.replace (/([^a-zA-Z0-9])|(_)/g, '');
或使用RegExp构造函数
const onlyChars = new RegExp ('([^a-zA-z0-9])|(_)', 'g'); const filteredString = R.replace (onlyChars, '');
并使用它:
const oldString = `MAX EUK_1334-PP/B+`; filteredString (oldString); -> "MAXEUK1334PPB"
UPDATE:我的错误,我应该第一次写错了,因为点实际上被删除了。这个正则表达式不删除的字符是_,所以我添加了。
8xiog9wr6#
您可以使用字符的ASCII值:
while(!end of string){ if(valueOfChar is between 48-57 or 65-90 or 97-122) write it to your string }
这可能会有所帮助,但我不知道你是否应该用replaceAll编写代码。replaceAll和这段代码的性能相同(O(n))。
replaceAll
O(n)
6条答案
按热度按时间du7egjpx1#
可能有一个更简洁的正则表达式,但这肯定会起作用:
zengzsys2#
f0brbegy3#
打印结果:
j7dteeu84#
有些人忘记了“_”字符:
String regex = "[_\\W]";
但我仍然认为OP是欺骗自己,没有证明他首先尝试,并张贴在他原来的问题他的尝试。
toe950275#
几乎与OP相同,我尝试了Ramda
删除除字符以外的所有内容(加上:“-/)。奇怪的是,如果没有使用构造函数,这个正则表达式并没有删除点(.)。其他一切都像一个魅力。
因此,对于OP应该是
或使用RegExp构造函数
并使用它:
UPDATE:我的错误,我应该第一次写错了,因为点实际上被删除了。这个正则表达式不删除的字符是_,所以我添加了。
8xiog9wr6#
您可以使用字符的ASCII值:
这可能会有所帮助,但我不知道你是否应该用
replaceAll
编写代码。replaceAll
和这段代码的性能相同(O(n)
)。