2016-12-15 30 views
-1

我正在使用使用C#脚本的数据捕获软件(PSI-Capture)。我需要知道将捕获的值转换为字符串然后拆分为空格或换行符的最佳方法。我正在捕获一个全名字段(FirstName MiddleName Surname),有时它们在一行或两行中。所以我需要在空格和换行符上进行拆分,以便我可以在单独的字段中填充名称的每个部分。在空间或换行符上拆分

的名称是有时就像在一条线:

MICHAEL JACKSON

,有时他们就像在两行:

MICHAEL JAMES
JACKSON

+3

您是否试过s.Split(new [] {'\ n','\ r','','\ t'},StringSplitOptions.RemoveEmptyEntries)? –

回答

0

这可能会为你

names = names.Replace(Environment.NewLine, " "); // as suggested by @Dmitry Bychenko 
string[] nm = names.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); 

现在做的伎俩,如果string[] nm包含2个元素,这意味着名字可是没有中间名所以

firstname = nm[0]; 
if(nm.Length > 2) 
{ 
    middlename = nm[1]; 
    lastname = nm[2] 
} 
else 
{ 
    lastname = nm[1] 
} 
+1

'Environment.NewLine'代替'“\ r \ n”'更精确实施 –

+0

请将'nm.Length> = 2'更改为'nm.Length> 2'。如果'nm'包含2个元素'nm [2]'将抛出excepton。 – erikscandola

+0

漂亮的渔获@erikscandola。完成。谢谢:) –

0

nameInputText是用户输入的,那么你可以试试以下用于获取所需的用户名部分数组:

string actualName = Regex.Replace(nameInputText, @"\r\n?|\n|\s+", "-"); 
string[] partsOfName = actualName.Split(new char[]{'-'}, StringSplitOptions.RemoveEmptyEntries); 

在此示例中,您将获得在actualName变量,并通过分裂基于-意愿给你的元素所需的阵列,名称的部分

0

可以更换的space

string str = str.Replace(Environment.NewLine," "); 
string[] array = str.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); 

使用的基础上NewLinespacesplitStringSplitOptions.RemoveEmptyEntries将确保没有empty entries保留在array

+0

我的脚本编写技巧非常有限,因为我仍然在学习它们,我最终得到了这个,但是肯定有些问题,因为我无法工作 – Sadeb

+0

if(dataField.Name ==“Z_Name” ) { 尝试 \t { \t string str = str.Replace(Environment.NewLine,“”); \t \t \t \t \t string [] array = str.Split(new char [] {''},StringSplitOptions.RemoveEmptyEntries); \t \t \t \t \t string actualName = Regex.Replace(Z_Name,@“\ r \ n?| \ N | \ S +”, “ - ”); \t \t \t \t \t串[] NM = actualName.Split(新的char [] { ' - '},StringSplitOptions.RemoveEmptyEntries); \t \t \t \t \t姓名=纳米[0]; \t \t \t \t \t如果(nm.Length> 2) \t \t \t \t \t \t { \t \t \t \t middlename = nm [1]; \t \t \t \t lastname = nm [2]; \t \t \t \t \t \t} \t \t \t \t \t别的 \t \t \t \t \t \t { \t \t \t \t姓氏=纳米[1]; \t \t \t \t \t \t} \t \t \t \t \t} \t \t \t \t} – Sadeb