【问题标题】:Replace non-roman characters with empty spaces [duplicate]用空格替换非罗马字符[重复]
【发布时间】:2020-12-15 19:21:12
【问题描述】:

我阅读了一个 .xlsx 文件,其中一些单元格包含特殊字符。在将此类数据插入数据库时​​,这给我带来了问题,因此我尝试将此类字符替换为空格,如下所示:

using System;
using System.Text.RegularExpressions;

namespace ConsoleApp2
{
    public class Program
    {
        public static void Main(string[] args)
        {
            var name = "MONEDA S.A. ADMINISTRADORA DE FONDOS DE INVERSIモN";
            name = Regex.Replace(name, @"[^A-Za-z0-9 ]", "");
            Console.WriteLine(name);

        }
    }
}

但是这样,我也替换了 .、- 和 , 之类的字符——这是不可取的。那么,如何才能只替换非罗马字符呢?

【问题讨论】:

    标签: c# regex .net-core


    【解决方案1】:

    查看 ASCII 表。从你所说的,只要去掉任何不是标准 ASCII 的东西:

    var name = "MONEDA S.A. ADMINISTRADORA DE FONDOS DE INVERSIモN";
    name = new string(name.Where(c => (int)c <= 127).ToArray());
    

    【讨论】:

    • \x00-\xff 限制性太强,不包括外来字母。 [\w-[a-zA-Z0-9]] 会更好。但这要看需要匹配什么,非罗马字是模棱两可的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-29
    • 1970-01-01
    • 2011-07-14
    • 1970-01-01
    • 2022-01-13
    • 2015-02-20
    相关资源
    最近更新 更多