更换后保留空间

时间:2016-01-18 10:21:13

标签: c#

我有字符串[] [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
}

2 个答案:

答案 0 :(得分: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; 
      } 
   }
}

这应该重建你的旧字符串。 另一个选择是使用Regex并只替换值。

答案 1 :(得分:1)

当您分割空格时,由于提供了多个分隔符,因此应该在单独的数组中创建。但是,由于您在StringSplitOptions.RemoveEmptyEntries中提供了Split选项,因此省略了这些选项。

将此选项替换为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
}