我在var set中有各种字符串
var linhas = new[] { line8, line9, line10}
我想在一个消息框中显示它们,但是!我不想展示那些空的,所以我使用以下
foreach (var l in linhas)
if (l != null)
{
MessageBox.Show(l);
}
但正如预测的那样,它一次只能显示一条消息。是否有可能以某种方式从列表中删除空行,并在单个MessageBox中仅显示null以外的那些?
MessageBox.Show(linenotnull8 + "\n" + linenotnull10);
答案 0 :(得分:5)
使用以下内容,您可以过滤掉null
字符串,然后使用String.Join
从linhas
中的其余字符串创建单个字符串,并使用回车符分隔每个字符串。 / p>
MessageBox.Show(String.Join(Environment.NewLine, linhas.Where(x => x != null)));
旁注...我使用Environment.NewLine
代替'\n'
,因为它将使用正确的换行符,具体取决于您运行的环境(Windows vs Unix)。
包含" \ r \ n"的字符串对于非Unix平台,或包含" \ n"的字符串对于Unix平台。
答案 1 :(得分:1)
要检查数组中的空值或空值,请使用string.IsNullOrEmpty
:
以下是使用linq的解决方案:
linhas = linhas.Where(x => !string.IsNullOrEmpty(x)).ToArray();
string s = string.Join(Environment.NewLine, linhas);
MessageBox.Show(s);
答案 2 :(得分:1)
另一个选项,使用现有的设置,您可以使用String Builder
我还添加字符串检查null
或empty
sb StringBuilder = new StringBuilder();
for(int i = 0; i < linhas.Length ; i++)
if (!String.IsNullOrEmpty(linhas[i]))
sb.AppendFormat("{0}{1}" , linhas[i] , Environment.NewLine);
MessageBox.Show(sb.toString());
答案 3 :(得分:1)
最好使用StringBuilder:
StringBuilder sb=new StringBuilder();
foreach (var l in linhas)
if (l != null)
{
sb.AppendLine(l);
}
MessageBox.Show(sb.ToString());
如果您不想显示空字符串,则必须更改if条件:
if(!String.IsNullOrEmpty(l) && l!="")