我需要从名称中删除首字母缩写,比如
K A M Paul Silvester->预期输出:Paul Silvester。
我已经找到了一个使用java的解决方案,但我需要使用C#
public static void main(String args[])
{
String input = "K A M Paul Silvester";
input = input.replaceAll("\b[A-Z]+(?:\.|\s+|$)", "").trim();
System.out.println(input);
}
我还需要检查输入名称是否有效,如果用户输入名称的首字母方法应该返回false,否则返回true。我怎么做
public bool checkName(string name)
{
}
我认为你需要一个正则表达式来找到什么是首字母缩写,什么是全名,如果是这样的话,我可以建议你使用这样的正则表达式:
var match = Regex.Match(input, @"(?<initials>([A-Z] )+)?(?<name>.+)");
if (match.Success)
{
var initials = match.Groups["initials"].Value;
var name = match.Groups["name"].Value;
var hasNotInitials = string.IsNullOrWhiteSpace(initials);
}
C#演示I
C++演示II
正如我在评论中提到的,这是一个棘手的问题,因为姓名首字母中的字母数量可能因姓名而异。这里有一些你可以做的事情,可能在大多数时候都有效。
不需要正则表达式
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace test
{
class Program
{
static void Main(string[] args)
{
String input = "K A M Paul Silvester";
String[] nameaArr = input.Split(' ');
String firstName = nameaArr[nameaArr.Length - 2];
String secondName = nameaArr[nameaArr.Length - 1];
String name = firstName + " " + secondName;
Console.WriteLine(name);
Console.ReadKey();
}
}
}
我在这里使用了C#,因为您在问题中标记了C#ava,您可以执行相同的
警告
如果用户使用名字后面的首字母缩写。例如:Paul Silvester K A M
(.b)*(.*) Group 2 will have the rest after the initials.
K A M Paul Silvester->K A M(Paul Silvester(
K A Paul-->K A(Paul(
对不起,我不使用C#,所以也许你必须使用双excapes?