Godot引擎中如何移除字符串内的所有标点符号
GDScript 移除字符串所有标点实现方案
直接用正则全局匹配替换是最省事的写法,不用手动链式写N个replace()逐个删标点:
func process_command(_input: String) -> Array: # 初始化正则对象,规则匹配所有Unicode标准下的标点符号 var reg = RegEx.new() reg.compile("\\p{P}") # 全局替换所有匹配到的标点为空字符串,第三个参数true代表全局替换 var clean_text = reg.sub(_input, "", true) # 保留你原来的转小写、按空格拆分逻辑 var words: Array = clean_text.to_lower().split(" ", false) return words
方案说明
- 正则规则里的
\p{P}可以覆盖所有语言的常见标点:英文逗号、句号、感叹号、问号、引号,中文顿号、句号、书名号这类都能匹配到,不会漏删 - 注意你原来的函数返回值标注写的是
String,但实际接收的是拆分后的数组,要改成Array不然会触发类型校验报错
如果不想用正则,也可以用循环遍历指定标点列表逐个替换,适合只需要处理固定少量英文标点的场景:
func process_command(_input: String) -> Array: var clean_text = _input # 把需要移除的标点全部加到下面的数组里即可 for p in [",", ".", "!", "?", ";", ":", "'", "\"", "(", ")"]: clean_text = clean_text.replace(p, "") var words: Array = clean_text.to_lower().split(" ", false) return words
这个写法的缺点是没列进数组的标点不会被移除,适配性比正则方案差。
内容的提问来源于stack exchange,提问作者Hidden
相关产品推荐
相关产品推荐

