如何替换不需要的字符

Big*_*ndo 1 groovy soapui

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

text?text
text?text
text**text**
text*text (text)
text *text*
text?
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用 if else 语句,以便如果酒店名称包含任何这些字符,则将它们替换为 -。但是我收到并错误指出悬空?。我只是想检查我是否正确地使用了这些字符的替换。

def hotelNameTrim = hotelName.toString()

if (hotelNameTrim.contains("/"))
{
    hotelNameTrim.replaceAll("/", "-")
}
else if (hotelNameTrim.contains("*"))
{
    hotelNameTrim.replaceAll("*", "-")
}
else if (hotelNameTrim.contains("?"))
{
    hotelNameTrim.replaceAll("?", "-")
}
Run Code Online (Sandbox Code Playgroud)

Str*_*lok 5

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

尝试这个:

hotelNameTrim.replaceAll("[\\*\\?/]","-")
Run Code Online (Sandbox Code Playgroud)

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