用户可以使用通配符或regex提供任何路径。如果他们提供这一点,我需要确定这不是一个完整的静态路径。
var sourcePath: Array(String) = Array("/user/Orders/201507{2[7-9],3[0-1]}*")我正在编写下面的代码,我想我需要检查所有的字符,如?、{、^等。还有更好的方法吗?
if (sourcePath.trim.toLowerCase().indexOf("*") > 0)
{
println("Source path has wildcard/regex")
}
else
{
println("it is a static path, having no wildcard or regex")
}发布于 2022-04-27 11:02:31
在纠正数组初始化和执行的操作之后,代码将以下列方式生成解决方案:
var sourcePath: Array(String) = Array("/user/Orders/201507{2[7-9],3[0-1]}*")
for(path <- sourcePath){
if( path.trim.toLowerCase().indexOf("*") > 0 ) {
println("source path has wildcard/regex")
}
else {
println("it is a static path, having no wildcard or regex")
}
}输出:
source path has wildcard/regex还有其他方法来执行上述相同的任务。其中一些建议如下:
使用Regex:
import scala.util.matching.Regex
val pattern = new Regex("[*]") //the regex/wildcard you want to check
for(path <- sourcePath){
if( (pattern findAllIn path).mkString("").length > 0 ) {
println("Source path has wildcard/regex")
}
else {
println("it is a static path, having no wildcard or regex")
}
}使用matches():
for(path <- sourcePath){
if( path.matches(".*/*") ) {
//Here,'.*' is required syntax and '/' is an escape character in this case
println("Source Path has wildcard/regex")
}
else {
println("it is a static path, having no wildcard or regex")
}
}如果您正在寻找一种更好的方法来做到这一点,那么在大多数情况下,字符串函数(优化)的性能要好于正则表达式。因此,在本例中,您可以继续使用indexOf()或matches()。
您还可以参考下面的一些其他方法。
https://stackoverflow.com/questions/71971277
复制相似问题