C#如何从DataRow的带空格姓名字段中提取空格后的姓氏内容
问题核心错误说明
你之前的写法mitRow[" "].ToString()是错误的,方括号内需要传入字段名,这里传入空格相当于读取DataRow中名称为空格的字段,自然无法得到正确结果。
具体实现代码
你已经提前定义了分隔符数组char[] delimiterChars = {' '};,直接调用字符串的Split方法拆分即可,同时增加空值、无空格的异常兼容逻辑:
foreach (DataRow mitRow in dtMIT.Rows) { // 先获取完整姓名字符串,处理空值情况 string fullName = mitRow["poc"]?.ToString() ?? string.Empty; // 按空格拆分,移除多余空条目(避免多个连续空格的问题) string[] nameParts = fullName.Split(delimiterChars, StringSplitOptions.RemoveEmptyEntries); if (nameParts.Length >= 2) { // 名是拆分后的第一个元素 firstNameMIT.Text = nameParts[0]; // 姓是拆分后的最后一个元素(兼容中间名的情况,比如John A. Doe也能正确取到Doe作为姓) lastNameMIT.Text = nameParts[^1]; } else { // 没有空格的异常情况,可按业务需求调整赋值逻辑 firstNameMIT.Text = fullName; lastNameMIT.Text = string.Empty; } }
注意事项
- 原代码中你写的
Tostring存在大小写错误,C#中方法名是大写开头的ToString,拼写错误也会导致代码运行失败 - 如果你的业务场景确定姓名只有两个单词,也可以直接用
nameParts[1]取姓氏,用nameParts[^1]的写法兼容性更强
内容的提问来源于stack exchange,提问作者JonMarsh89
相关产品推荐
相关产品推荐

