2016-01-18 117 views
0

我有字符串[] [value1 value2 value3],我想用10 20 30替換它並在消息框中顯示它。但替換後刪除空格並顯示爲102030更換後保留空格

string[] values = headerData.Split(new string[] { "<#Tag(", ")>" }, // value1 value2 value3 StringSplitOptions.RemoveEmptyEntries); 
string text = ""; 
string val1 = ""; 

foreach (string val in values) 
{ 
    foreach(GlobalDataItem gdi in Globals.Tags.GlobalDataItems) 
    { 
     if (gdi.Name == val) 
     { 
     text+= gdi.Value; 
     } 
    } 
} 
MessageBox.Show(text); // 102030 
} 
+1

您連接,沒有空格的字符串(順便說一句,你可能要使用的string.join和GlobalDataItems.Any()來簡化你的代碼)。 –

+0

text + = gdi.Value +「」; –

+0

value1 value2 value3之間的空白可以更多或更少它可以是value1 value2 value3或value1 value2 value3任何 –

回答

1

將拆分選項設置爲.None;

foreach(string val in values) { 
if(string.IsNullOrWhiteSpace(val)) { 
text+= val; 
} 
    foreach(GlobalDataItem gdi in Globals.Tags.GlobalDataItems) 
    { 
     if (gdi.Name == val) 
     { 
     text+= gdi.Value; 
     } 
    } 
} 

這應該重建您的舊字符串。 另一種選擇是使用正則表達式,只需替換值。

+0

值之間的空白值value2 value3可以更多或更少它可以是value1 value2 value3或value1 value2 value3任何 –

1

由於提供了多個分隔符,當您拆分空格應該創建在單獨的數組中時。但是,由於您在Split中給出了選項StringSplitOptions.RemoveEmptyEntries,所以省略了這些選項。

將此選項替換爲StringSplitOptions.None。現在,只需將包含空字符串的每個備用數組連接到數組中的前一個元素。

我已在下方提供更新的代碼。看看這可以幫助,

string[] values = headerData.Split(new string[] { "<#Tag(", ")>" }, StringSplitOptions.None); 
string text = ""; 
string val1 = ""; 

var updatedValues = new List<string>(); 
for (int i = 0; i < values.Length; i++) 
{ 
    if(values[i] != string.Empty) 
    { 
     updatedValues.Add(values[i] + values[i + 1]); 
     i++; 
    } 
} 

foreach (string val in updatedValues) 
{ 
    foreach(GlobalDataItem gdi in Globals.Tags.GlobalDataItems) 
    { 
     if (gdi.Name == val) 
     { 
     text+= gdi.Value; 
     } 
    } 
} 
MessageBox.Show(text); // 102030 
}