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