在大写字母之前删除一封信

时间:2013-07-04 15:44:03

标签: c# regex

我有几个名字作为字符串,在其姓氏需要删除之前有一个' x '。

因此,例如,' John xSmith '需要以“ John Smith ”的形式返回,但不会影响像'Jane x Doe'这样的名称。

3 个答案:

答案 0 :(得分:1)

使用正则表达式(?<=\s)x(?=[A-Z])删除所有的x后面跟一个大写字母和一个空格。

答案 1 :(得分:0)

此regEx是否与您的字符串匹配? ^([a-zA-Z] +)x([A-Z] [a-zA-Z] +)* $ 之后,您只需使用括号之间的2匹配来重建字符串而不使用'x'

答案 2 :(得分:0)

这不是使用正则表达式,但它会实现你想要做的事情(包括允许 Jane x Doe 等名称)

static void Main(string[] args)
{
    string name = "John xSmith";
    var result = new StringBuilder();
    string[] splitString = name.Split(' ');
    foreach (string partName in splitString)
    {
        if (partName.Length > 1 && partName.StartsWith("x"))
        {
            result.Append(partName.Substring(1));
        }
        else
        {
            result.Append(partName);
        }
        result.Append(" ");
    }
    Console.WriteLine(result.ToString().Trim());
    Console.ReadKey();
}

使用name = "John xSmith"会生成 John Smith

使用name = "Jane x Doe"会生成 Jane x Doe