Java replaceAll()方法

Java replaceAll()方法,java,regex,string,replaceall,Java,Regex,String,Replaceall,我试图理解这段代码: for (File f : files) { fileName = f.getName().toUpperCase().replaceAll("_\\d\\d\\d\\d_\\d\\d_\\d\\d_\\d\\d_\\d\\d", ""); if (fileName.equals(tableName + ".XML")) { returnFile = f; break; } } 我被这部分难住了:repl

我试图理解这段代码:

for (File f : files) {
     fileName = f.getName().toUpperCase().replaceAll("_\\d\\d\\d\\d_\\d\\d_\\d\\d_\\d\\d_\\d\\d", "");

     if (fileName.equals(tableName + ".XML")) {
         returnFile = f;
         break;
     }
}
我被这部分难住了:
replaceAll(“\ud\\d\\d\\d\ud\\d\ud\\d\ud\\d\\d\ud\\d\\d”,”)

据我所知,它正试图从名称中删除某些内容(可能是下划线“u5;”),但确切的名称是
\\ud\\d\\d\\d\\ud\\d\\ud\\d\\d\\ud\\d\\d\\ud\\d

有人能解释一下吗

据我所知,它正试图从名称中删除某些内容(可能是下划线“0;”),但到底什么是\d\d\d\d\d\ud\d\ud\d\ud\d\ud\d\d

该模式将匹配此格式中的数字
[0-9]
,并将其替换为
,即无

比如说,

_7686_77_78_77_77
_0123_65_58_56_12
将在字符串中替换为
“”

据我所知,它正试图从名称中删除某些内容(可能是下划线“0;”),但到底什么是\d\d\d\d\d\ud\d\ud\d\ud\d\ud\d\d

该模式将匹配此格式中的数字
[0-9]
,并将其替换为
,即无

比如说,

_7686_77_78_77_77
_0123_65_58_56_12

将在字符串中替换为

\d-匹配数字[0-9]


\d-匹配数字[0-9]

str.replaceAll(“\ud\\d\\d\ud\\d\ud\\d\ud\\d\ud\\d\\d\\d”,”)
获取字符串
str
,并将正则表达式
的所有匹配项替换为零(即
)。(写入
\\d
而不是
\d
的原因是
\
被转义。)

在这种情况下,
\d
表示“数字”。因此,它很可能会从字符串中删除日期/时间。例如,如果
str
“stackoverflow\u 2016\u 03\u 30\u 23\u 47.jpg的屏幕截图”
,则在
replaceAll
之后,它将成为
stackoverflow.jpg的屏幕截图

为了了解正则表达式、它们是如何工作的以及它们能做什么,我建议大家阅读它们,例如。它有一个非常全面的可用性。

str.replaceAll(“\ud\\d\\d\ud\\d\ud\\d\ud\\d\ud\\d\\d”,”)
将字符串
str
替换为正则表达式
\d\d\d\ud\d\ud\d\ud\d
的所有匹配项,但不包含任何内容(即
)。(写入
\\d
而不是
\d
的原因是
\
被转义。)

在这种情况下,
\d
表示“数字”。因此,它很可能会从字符串中删除日期/时间。例如,如果
str
“stackoverflow\u 2016\u 03\u 30\u 23\u 47.jpg的屏幕截图”
,则在
replaceAll
之后,它将成为
stackoverflow.jpg的屏幕截图


为了了解正则表达式、它们是如何工作的以及它们能做什么,我建议大家阅读它们,例如。它有非常全面的可用性。

了解正则表达式。这段代码现在有两个问题。@jdv您看到的这两个问题是什么?了解正则表达式。这段代码现在有两个问题。@jdv您看到的这两个问题是什么?实际上,它将从_STACKOVERFLOW.JPG
变成
SCREENSHOT\u,因为他在
replaceAll()
@user2004685之前也在做
toUpperCase()这个答案只涵盖了
replaceAll
-部分,因为它是被问及的部分。我不会纠正你。如果有人感兴趣,请大家共同理解。:)实际上,它将成为STACKOVERFLOW.JPG的
屏幕截图,因为在问题中提供的示例中,在
replaceAll()
@user2004685之前,他也在做
toUpperCase()
。)这个答案只涵盖了
replaceAll
-部分,因为它是被问及的部分。我不会纠正你。如果有人感兴趣,请大家共同理解。:)