Groovy 如何替换不需要的字符

Groovy 如何替换不需要的字符,groovy,soapui,Groovy,Soapui,我有一些酒店包含无效字符,当我想将这些酒店名称作为文件名插入时,因为文件命名不允许/、*或?想知道这个错误是什么意思 text?text text?text text**text** text*text (text) text *text* text? 我试图使用if-else语句,以便如果酒店名称包含这些字符中的任何一个,那么将它们替换为-。然而,我收到并错误地声明了一个悬空?。我只想检查我是否为这些字符正确使用了replace def hotelNameTrim = hotelName.t

我有一些酒店包含无效字符,当我想将这些酒店名称作为文件名插入时,因为文件命名不允许/、*或?想知道这个错误是什么意思

text?text
text?text
text**text**
text*text (text)
text *text*
text?
我试图使用if-else语句,以便如果酒店名称包含这些字符中的任何一个,那么将它们替换为-。然而,我收到并错误地声明了一个悬空?。我只想检查我是否为这些字符正确使用了replace

def hotelNameTrim = hotelName.toString()

if (hotelNameTrim.contains("/"))
{
    hotelNameTrim.replaceAll("/", "-")
}
else if (hotelNameTrim.contains("*"))
{
    hotelNameTrim.replaceAll("*", "-")
}
else if (hotelNameTrim.contains("?"))
{
    hotelNameTrim.replaceAll("?", "-")
}

replaceAll接受正则表达式作为搜索模式。*然后呢?是正则表达式中的特殊字符,需要用反斜杠转义。它本身需要在Java字符串中转义:)

试试这个:

hotelNameTrim.replaceAll("[\\*\\?/]","-")

这将用破折号替换所有字符

replaceAll接受正则表达式作为搜索模式。*然后呢?是正则表达式中的特殊字符,需要用反斜杠转义。它本身需要在Java字符串中转义:)

试试这个:

hotelNameTrim.replaceAll("[\\*\\?/]","-")
这将用破折号替换所有字符