C# 如果名字(包括头衔和姓氏)之间只有一个空格,我如何拆分它们?

C# 如果名字(包括头衔和姓氏)之间只有一个空格,我如何拆分它们?,c#,regex,string,split,C#,Regex,String,Split,我有一个文本块,我需要拆分其中包含的标题和姓氏列表。它们都是用空格隔开的,根本没有回车 例如: 史密斯先生约翰逊夫人史密斯女士 等等等等 我需要把它们分解成单独的名字,这样我就有了如下的东西 string[] parts = Regex.Matches(myarray[0], "([^\s]*\s[^\s]*)(?:\s |$)") .Cast<Match>() .Select(m => m.Groups[1].Value) .ToArray(); [0]=史

我有一个文本块,我需要拆分其中包含的标题和姓氏列表。它们都是用空格隔开的,根本没有回车

例如:

史密斯先生约翰逊夫人史密斯女士 等等等等

我需要把它们分解成单独的名字,这样我就有了如下的东西

string[] parts =
  Regex.Matches(myarray[0], "([^\s]*\s[^\s]*)(?:\s |$)")
  .Cast<Match>()
  .Select(m => m.Groups[1].Value)
  .ToArray();
[0]=史密斯先生
[1] =约翰逊先生
[2] =约翰逊夫人
[3] =史密斯女士

任何帮助都将不胜感激

我正在使用.NET framework C#(以防对某人有用)。

我会试试

var result = Regex.Split(input, @" (?=Mr\b|Mrs\b|Ms\b)", RegexOptions.None);
如果每个标题都是“先生”、“女士”或“女士”。这种方法允许使用很多不寻常的姓氏,但需要提前知道每个姓氏。在

上看到它的实际效果,我会试试看

var result = Regex.Split(input, @" (?=Mr\b|Mrs\b|Ms\b)", RegexOptions.None);
如果每个标题都是“先生”、“女士”或“女士”。这种方法允许使用很多不寻常的姓氏,但需要提前知道每个姓氏。请参见

上的操作,使用以下命令

string[] parts =
  Regex.Matches(myarray[0], "([^\s]*\s[^\s]*)(?:\s |$)")
  .Cast<Match>()
  .Select(m => m.Groups[1].Value)
  .ToArray();
string[]部分=
Regex.Matches(myarray[0],“([^\s]*\s[^\s]*)(?:\s |$)”
.Cast()
.Select(m=>m.Groups[1]。值)
.ToArray();
使用以下方法

string[] parts =
  Regex.Matches(myarray[0], "([^\s]*\s[^\s]*)(?:\s |$)")
  .Cast<Match>()
  .Select(m => m.Groups[1].Value)
  .ToArray();
string[]部分=
Regex.Matches(myarray[0],“([^\s]*\s[^\s]*)(?:\s |$)”
.Cast()
.Select(m=>m.Groups[1]。值)
.ToArray();

这不是保存数据的好格式。那么医生、骑士、贵族、神职人员、外国人等等呢?@Kobi:多年来,我看到人名的复杂性非常大,我怀疑正确的方法是使用XML混合内容模型,用不同部分的语义标记全名,允许根据目标形式级别省略位。这是一个非常复杂的方法!但我认为这可能是实际工作正常的最低限度。当然,没有人这样做,所以一定有很多糟糕的代码在那里…必读:这不是保存数据的好格式。那么医生、骑士、贵族、神职人员、外国人等等呢?@Kobi:多年来,我看到人名的复杂性非常大,我怀疑正确的方法是使用XML混合内容模型,用不同部分的语义标记全名,允许根据目标形式级别省略位。这是一个非常复杂的方法!但我认为这可能是实际工作正常的最低限度。当然,没有人这样做,所以一定有很多糟糕的代码在那里…必读:我有一个同事的姓氏是两个单词,甚至没有头衔。真实世界的数据令人讨厌!我不会提及我同事的名字——对他们来说不公平——但是考虑一下,这是适合标题+姓氏模式的。(另外:格拉夫是一个早已死去的历史人物,不会抱怨自己是一个榜样。)我有一位同事,他的姓氏只有两个字,甚至没有头衔。真实世界的数据令人讨厌!我不会提及我同事的名字——对他们来说不公平——但是考虑一下,这是适合标题+姓氏模式的。(奖励:格拉夫是一个早已死去的历史人物,不会抱怨自己是一个榜样。)不错;这将处理一些真正棘手的案例,只要标题列表足够全面;这将处理一些真正棘手的案例,只要标题列表足够全面。