2016-12-15 29 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