gpt4 book ai didi

Java:我是否有一个有效的正则表达式来消除符号和重命名文件?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:53:50 26 4
gpt4 key购买 nike

我有一系列链接名称,我试图从中删除特殊字符。从简短的文件走动来看,我最关心的似乎是方括号、圆括号和冒号。在使用转义字符选择 SELECT : [( 失败后,我决定排除所有我想保留在文件名中的内容。

考虑:

String foo = inputFilname ;   //SAMPLE DATA: [Phone]_Michigan_billing_(automatic).html
String scrubbed foo = foo.replaceAll("[^a-zA-Z-._]","") ;

预期结果:Phone_Michigan_billing_automatic.html

当我放弃它时,我的转义字符正则表达式接近 60 个字符。我在更改策略之前保存的最后一个版本是 [:.(\\[)|(\\()|(\\))|(\\])]认为 我要的是 escape-character-[()]

一揽子排除似乎工作得很好。正则表达式真的那么简单吗?关于该策略的有效性的任何输入?我觉得我错过了什么,需要几双眼睛。

最佳答案

在我看来,您为这项工作使用了错误的工具。 StringUtils has a method named replaceChars这会将所有出现的字符替换为另一个字符。这是文档:

public static String replaceChars(String str,
String searchChars,
String replaceChars)

Replaces multiple characters in a String in one go. This method can also be used to delete characters.

For example:
replaceChars("hello", "ho", "jy") = jelly.

A null string input returns null. An empty ("") string input returns an empty string. A null or empty set of search characters returns the input string.

The length of the search characters should normally equal the length of the replace characters. If the search characters is longer, then the extra search characters are deleted. If the search characters is shorter, then the extra replace characters are ignored.

StringUtils.replaceChars(null, *, *) = null
StringUtils.replaceChars("", *, *) = ""
StringUtils.replaceChars("abc", null, *) = "abc"
StringUtils.replaceChars("abc", "", *) = "abc"
StringUtils.replaceChars("abc", "b", null) = "ac"
StringUtils.replaceChars("abc", "b", "") = "ac"
StringUtils.replaceChars("abcba", "bc", "yz") = "ayzya"
StringUtils.replaceChars("abcba", "bc", "y") = "ayya"
StringUtils.replaceChars("abcba", "bc", "yzx") = "ayzya"

所以在你的例子中:

    String translated = StringUtils.replaceChars("[Phone]_Michigan_billing_(automatic).html", "[]():", null);
System.out.println(translated);

将输出:

Phone_Michigan_billing_automatic.html

这将比您可以编写的任何正则表达式都更直接、更容易理解。

关于Java:我是否有一个有效的正则表达式来消除符号和重命名文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14650309/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com