削除する必要がある姓の前に「 x 」を持つ文字列としていくつかの名前があります。
したがって、たとえば、' John xSmith ' は ' John Smith 'として戻す必要がありますが、'Jane x Doe' のような名前には影響しません。
正規表現(?<=\s)x(?=[A-Z])
を使用して、x の後に大文字が続き、空白の後にあるすべてを削除します。
これは正規表現を使用していませんが、あなたがやろうとしていることを達成します(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"
プロデュースする
Jane x Doename = "Jane x Doe"
を作成します。
この正規表現は文字列と一致しますか? ^([a-zA-Z ]+)x([AZ][a-zA-Z ]+)*$ その後、括弧の間に 2 つの一致を使用して、「x」なしで文字列を再構築するだけです。