C#如何让字符串末尾空换行对应的\n转义字符正常显示
问题根源
- 你初始化的
pins字符串仅包含3个\n分隔4行内容,最后一行末尾没有\n,经过反转操作后末尾依然没有换行符 - 如果代码后续逻辑或者输出环境存在自动修剪末尾空白字符的规则,全空白的末尾行连带对应的
\n会被直接移除,就会出现你遇到的缺行问题
修复方案
直接在最终返回的结果末尾追加一个\n,同时避免对结果做任何Trim类操作即可,修改后的代码如下:
using System.Linq; namespace BowlingPins { public class Bowling { public string BowlingPins(int[] arr) { int count = 0; string pins = "!!!I!!!\n!!I!I!!\n!I!I!I!\nI!I!I!I"; string[] pinArr = pins.Select(c => c.ToString()).ToArray(); for (int i = 0; i < pinArr.Length; i++) { string item = pinArr[i]; if (item == "I") { count++; } foreach (int num in arr) { if (num == count) { pinArr[i] = "!"; } } } var result = string.Join("", pinArr.Reverse()).Replace("!", " "); // 末尾追加换行符,保证四行都有对应的换行标识 return result + "\n"; } } }
补充说明
- 如果你的需求是要查看字符串的转义字面量,需要把
\n替换为\\n后再输出,就可以直接看到\n字符而不是被解析为换行 - 不要在返回前调用
Trim()、TrimEnd()这类方法,会删掉末尾的空白和换行
内容的提问来源于stack exchange,提问作者Edward
相关产品推荐
相关产品推荐

