当前位置: 首页 > 面试题库 >

如何从字符串中删除特殊字符?

酆晔
2023-03-14
问题内容

我想删除特殊字符,例如:

- + ^ . : ,

使用Java从String中获取。


问题答案:

这取决于你定义为特殊字符的内容,但是请尝试replaceAll(...)

String result = yourString.replaceAll("[-+.^:,]","");

请注意,该^字符不能是列表中的第一个字符,因为你要么必须对其进行转义,否则将意味着“除这些字符外的任何字符”。

另一个注意事项:-字符必须是列表中的第一个或最后一个,否则你必须对其进行转义,否则它将定义一个范围(例如:-,,表示“ :to 范围内的所有字符” ,)。

所以,为了保持一致性,而不是依赖于角色定位,你可能想逃避所有那些在正则表达式特殊含义的字符(下面的列表并不完整,所以要注意的其他人物像(,{,$等等) :

String result = yourString.replaceAll("[\\-\\+\\.\\^:,]","");

如果要摆脱所有标点和符号,请尝试使用此正则表达式:(\p{P}\p{S}请注意,在Java字符串中,你必须转义反斜杠:)"\\p{P}\\p{S}"

如果可以精确定义字符串中应保留的内容,则第三种方法可能是这样的:

String  result = yourString.replaceAll("[^\\w\\s]","");

这意味着:替换所有不是单词字符(在任何情况下均为az,0-9或_)或空格的内容。

编辑:请注意,还有其他两种模式可能会有所帮助。但是,我无法全部解释它们,因此请查看regular-expressions.info的参考部分。

如Ray所建议的,这是“定义允许的字符”方法的限制性较小的替代方法

String  result = yourString.replaceAll("[^\\p{L}\\p{Z}]","");

正则表达式匹配所有不是任何语言的字母和分隔符(空格,换行符等)的所有内容。请注意,你不能使用[\P{L}\P{Z}](大写P表示不具有该属性),因为那意味着“不是字母或不是空格的所有内容”,几乎所有内容都匹配,因为字母不是空格,反之亦然。

有关Unicode的其他信息

某些unicode字符似乎由于不同的编码方式(例如单个代码点或代码点组合)而引起问题。有关更多信息



 类似资料:
  • 问题内容: 我在删除特殊字符时遇到问题。我想删除除“()/。%-&”以外的所有特殊字符,因为我将该字符串设置为标题。 我编辑了原始代码(如下所示): 但这无法删除特殊字符,例如:“,”,“”。 原始代码:(此方法有效,但会删除以下字符:“()/。%-&”) 问题答案: 您的句点匹配所有字符。转义它(和其他特殊字符),如下所示:

  • 问题内容: 我面临网址问题,我希望能够转换标题,该标题可以包含任何内容,并去除所有特殊字符,因此它们仅包含字母和数字,当然我想用连字符替换空格。 怎么做?我听说过很多关于正则表达式(regex)的使用… 问题答案: 这应该可以满足您的需求: 用法: 将输出: 编辑: 嘿,只是一个简单的问题,如何防止多个连字符彼此相邻?并将它们替换为1?

  • 问题内容: 如何从字符串中去除特殊字符的答案?不管用。 这是我得到的,它给我一个错误 错误提示 _Element(aka字符)无法转换为预期的参数类型’String’。 问题答案: 像这样: 测试方法如下:

  • 我有一个字符串和一个布尔值,如果字符串中有一个*并且布尔值为真,它将忽略*之前的所有内容,只返回*之后的字符。但是如果boolean为false,它将返回*之前的内容,并删除其后的所有内容。 示例:“abc*def”,真 - 布尔值所做的是,如果为真,忽略*之前的所有内容,我不知道如何做到这一点。我想知道的是我是否可以读取字符串,以及*是否从charAT(0)删除到charAT(*)。类似这样的东

  • 如何从R中的字符串中删除所有特殊字符并用空格替换它们? 要删除的一些特殊字符是:

  • 问题内容: 我正在为我的应用程序创建一个RSS feed文件,在其中我想删除HTML标签,该操作由完成。但是不删除HTML特殊代码字符: 等等 请告诉我任何可用于从字符串中删除这些特殊代码字符的函数。 问题答案: 使用解码或使用删除它们: 编辑:根据雅科的评论的替代 用{2,8}或其他内容替换’+’可能会很好。当出现未编码的“&”时,这将限制替换整个句子的机会。