首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在C#中使用正则表达式删除日语字符串中的特殊字符

在C#中使用正则表达式删除日语字符串中的特殊字符
EN

Stack Overflow用户
提问于 2015-07-07 14:23:27
回答 2查看 1.4K关注 0票数 2

我有一个这样的字符串(string inputstring = "xyz's𞉀,外部広告掲載費用how are you?'")。我想在C#中使用正则表达式从这个字符串中删除特殊字符。我需要这样的输出(xyzs 123456外部広告掲載費用你好吗),请让我知道这是可能的。

EN

回答 2

Stack Overflow用户

发布于 2015-07-07 15:15:30

类似于:

代码语言:javascript
复制
string finalstring = Regex.Replace(inputstring, @"[^\p{L}\p{N}\s]", "");

这里是Unicode类别:https://msdn.microsoft.com/library/20bw873z.aspx

代码语言:javascript
复制
\p{L} are Letters
\p{N} are Numbers
\s are space characters

我否定了所有内容,因此删除了不属于所有三个类别的字符。

注意,从技术上讲,我走得太远了.该正则表达式将“接受”而不是“删除”其他脚本,因此如果您遇到英文-中文-日文-阿拉伯混合字符串,则中文和阿拉伯字符将保留不变。虽然删除“阿拉伯”字符很容易,但删除“中文”字符可能很复杂,因为有CJK Unified Ideographs...

您可以从以下内容开始:

代码语言:javascript
复制
string finalstring = Regex.Replace(inputstring, @"[^\p{IsBasicLatin}\p{IsLatin-1Supplement}\p{IsLatinExtended-A}\p{IsLatinExtended-B}\p{IsLatinExtendedAdditional}\p{IsLatinExtendedAdditional}\p{IsHiragana}\p{IsKatakana}\p{IsCJKUnifiedIdeographs}\s]", "");

然后看看是否需要添加其他CJK块...(同一页,“支持的命名块”部分)。这将删除“阿拉伯”(和其他脚本),但显然不会对CJK的“问题”做任何事情。

票数 1
EN

Stack Overflow用户

发布于 2015-07-07 14:55:18

您可以创建一个禁止字符的char数组,并使用两个for循环,如下所示:

代码语言:javascript
复制
string inputstring =  "xyz's &#123456 , 外部広告掲載費用 how are you?'";
string outputstring = "";
char[] bannedCharacters = new char[]{'\'', '&', '#', ',', '?'};
bool isOk;

for(int i = 0; i < inputstring.Length; i++){
    isOk = true;
    for(int j = 0; j < bannedCharacters.Length; j++){
        if(inputString[i] == bannedCharacters[j]){
            isOk = false;
        }
    }
    if(isOk){
        outputstring += inputstring[i];
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31261219

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档