c# - 在以下情况下删除不需要的尾随逗号的正确和安全方法是什么?
问题描述
假设我们要删除,
以下代码中最后一个不需要的。
for (int i = 0; i < 5; i++)
{
foreach (var a in "Money")
Console.Write($"{a},");
}
如果我们只添加Console.Write("\b\n");
如下,
for (int i = 0; i < 5; i++)
{
foreach (var a in "Money")
Console.Write($"{a},");
Console.Write("\b\n");
}
输出将仍然相同。不需要的尾随逗号仍然存在。
但是如果我们添加\0
如下,
for (int i = 0; i < 5; i++)
{
foreach (var a in "Money")
Console.Write($"{a},");
Console.Write("\b\0\n");
}
不需要的尾随,
消失。
有人说 using\0
只是一个 hack,可能会在未来的更新中破坏。那么,如果我坚持使用\b\n
序列,删除尾随逗号的正确和安全方法是什么?
编辑
不仅在终端输出上,\b
在下面也不会去掉前面的字符。
using (StreamWriter sw = new StreamWriter("output.txt"))
{
for (int i = 0; i < 5; i++)
{
foreach (var a in "Money")
sw.Write($"{a},");
sw.Write("\b\n");
}
}
解决方案
您可以String.Join
在内部循环中使用:
for (int i = 0; i < 5; i++)
{
var text = String.Join(",", "Money");
Console.Write(text);
}
关于您的转义序列,取决于\b
终端实现。如果可以选择向后移动一个字符并删除该字符,或者它可能只是将光标向后移动一个字符并且对已经存在的内容不做任何事情。
这与写作\0
有点落后的原因相同,因为再次由终端决定如何实现nul
角色的渲染。
如果您想使用转义序列来清除该值,那么您可以使用\b
后移一个字符,在 上写一个空格,
,然后再次返回\b
,然后写下换行符:
Console.Write("\b \b\n");
推荐阅读
- r - 非常令人困惑的 R 功能 - 完成列表项名称
- xamarin.forms - Xamarin 窗体 Android 工具栏文本颜色
- azure - 适用于来自 Azure 云服务的流量的 Azure NSG 规则
- sql - 使用公用表表达式运行多个查询
- python - 将默认列表参数传递给数据类
- ubuntu-15.04 - ubuntu 操作系统 apt-get upate 命令给了我错误
- c++ - 返回本地对象的元组
- javascript - Angular - 如何显示数组中的数据?
- javascript - 参数列表后未捕获的 SyntaxError: 缺失) - Forloop JS
- ios - 导出 Xcode 应用程序供个人通过 Web 服务器下载