我需要从名称中删除首字母,例如,
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)
{
}
答案 0 :(得分:1)
我认为您需要一个正则表达式才能找到缩写和全名,如果可以的话,我建议您使用这样的正则表达式:
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);
}
答案 1 :(得分:0)
正如我在评论中已经提到的那样,这是一个棘手的问题,因为姓名缩写中的字母数量可能因名称而异。您可以做一些可能在大多数时间都有效的事情。
不需要正则表达式。
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#。如果您使用的是 Java ,则可以执行相同的操作
警告!
如果用户输入带有以下内容的名称,则结果可能是错误的 名称后的缩写。例如:Paul Silvester K A M
答案 2 :(得分:0)
(.\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#,所以也许您必须使用两次摘录?