首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检查源路径是否有regex /通配符可用?

如何检查源路径是否有regex /通配符可用?
EN

Stack Overflow用户
提问于 2022-04-22 15:36:05
回答 1查看 70关注 0票数 0

用户可以使用通配符或regex提供任何路径。如果他们提供这一点,我需要确定这不是一个完整的静态路径。

代码语言:javascript
复制
var sourcePath: Array(String) = Array("/user/Orders/201507{2[7-9],3[0-1]}*")

我正在编写下面的代码,我想我需要检查所有的字符,如?{^等。还有更好的方法吗?

代码语言:javascript
复制
if (sourcePath.trim.toLowerCase().indexOf("*") > 0) 
{
  println("Source path has wildcard/regex")
}
else
{ 
  println("it is a static path, having no wildcard or regex")
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-27 11:02:31

在纠正数组初始化和执行的操作之后,代码将以下列方式生成解决方案:

代码语言:javascript
复制
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")
    }
}

输出:

代码语言:javascript
复制
source path has wildcard/regex

还有其他方法来执行上述相同的任务。其中一些建议如下:

使用Regex:

代码语言:javascript
复制
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():

代码语言:javascript
复制
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()。

您还可以参考下面的一些其他方法。

Scala check if string contains no special chars

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71971277

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档