如何在foreach循环中将嵌套JSON的手机号打印在同一行
解决同一行打印嵌套JSON中手机号的问题
嘿,你的问题其实和String.Format没关系,问题出在每次循环都调用了会自动加换行的debugOutput方法——你每次传入格式化后的手机号,方法里都会给它追加Environment.NewLine,自然每个手机号就单独占一行了。
这里给你两个简单可行的解决方案:
方案1:先拼接所有手机号,再一次性输出
先把所有需要打印的手机号格式好并拼接成一个完整的字符串,最后只调用一次debugOutput,这样就能保证所有手机号在同一行:
// 用StringBuilder来高效拼接字符串 StringBuilder phoneLine = new StringBuilder(); foreach (var person in JMain.person) { // 把每个手机号格式后追加到字符串里 phoneLine.AppendFormat("<{0};>", person.phone); } // 一次性输出拼接好的内容 debugOutput(phoneLine.ToString());
如果你的outPut变量需要保留最终的换行,这个方案完全适用——debugOutput里的换行只会在整个手机号行的末尾添加一次。
方案2:修改debugOutput方法,控制换行时机
给debugOutput加一个可选参数,让你可以决定是否在当前输出后添加换行。这样循环时不换行,循环结束后再补一个换行(可选):
// 修改后的debugOutput方法,默认还是加换行,保持原有逻辑兼容 private void debugOutput(string strDebugText, bool addNewLine = true) { try { string outputContent = strDebugText; if (addNewLine) { outputContent += Environment.NewLine; } outPut += outputContent; System.Diagnostics.Debug.Write(outputContent); } catch(Exception ex) { System.Diagnostics.Debug.Write(ex.Message.ToString() + Environment.NewLine); } } // 调用方式:循环时关闭自动换行 foreach (var person in JMain.person) { debugOutput(String.Format("<{0};>", person.phone), false); } // 可选:最后加一个换行,让后续输出不挤在同一行 debugOutput("", true);
两种方案都能解决你的问题,选哪个看你更倾向于修改调用逻辑还是扩展方法功能~
内容的提问来源于stack exchange,提问作者marissalianam
相关产品推荐
相关产品推荐

