gpt4 book ai didi

java - Java 中的字符转换正则表达式

转载 作者:行者123 更新时间:2023-12-01 16:44:47 26 4
gpt4 key购买 nike

我正在尝试使用正则表达式为文件名创建一个文本转换器,在本文中,有一些不同的破折号类型和连字符类型减号等。我想将它们全部转换为一个简单的连字符。

有几种不同类型的破折号,它们的 unicode 在这里:

u2212 u002D u05BE u2011 u2012 u2013 u2014 u2015 u207B u208B u2212 uFE58 uFE63 uFF0D 

如果一个字符是这些 un​​icode 之一,那么我想使用正则表达式将其转换为简单连字符,即 u2010

如何让这个字符用java转换正则表达式?

首先我检查文件名是否有效,如下所示:

private static final Pattern FILE_NAME = Pattern.compile("^[a-zA-Z0-9_\\u2212\\u002D\\u00AD\\u05BE\\u2010\\u2011\\u2012\\u2013\\u2014\\u2015\\u207B\\u208B\\u2212\\uFE58\\uFE63\\uFF0D\\.\\s\\,\\[\\]()\\{\\}]+$");

if (!FILE_NAME.matcher(file.getFilename()).matches()) {
throw new FileValidationException(FILE_NAME_INVALID);
}

但现在我不想验证它,我只想用连字符 u2010 替换字符

最佳答案

使用<TargetString>.replaceAll(<pattern>, <replacement>) (参见:Java 8 API: String)

在您的情况下,这将是:file.getFilename().replaceAll(FILE_NAME.toString(), "\u2010")

关于java - Java 中的字符转换正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54021718/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com