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
-部分,因为它是被问及的部分。我不会纠正你。如果有人感兴趣,请大家共同理解。:)