删除由控制台写入的字符
本文关键字:字符 控制台 删除 | 更新日期: 2023-09-27 18:29:39
static void f_WriteIpAddresses()
{
IPHostEntry host;
string localIP = "?";
host = Dns.GetHostEntry(Dns.GetHostName());
foreach (IPAddress ip in host.AddressList)
{
Console.Write(ip.ToString());
Console.Write(" - ");
}
}
static void Main(string[] args)
{
Console.WriteLine("Your IP Address:")
WriteIpAddresses();
Console.Write("[You can delete/modify address]");
string ip = Console.ReadLine();
}
我想找到所有地址并写在用户可以删除的行上,直到正确的地址或修改该行。
c:'>address.exe
Your IP Address:
192.168.1.13 - 10.10.2.15 [You can delete/modify address]
看看这篇文章,它解释了如何清除控制台的各个部分。这样,您还可以将控制台光标设置在所需的位置,以便用户可以覆盖控制台中的某些部分。请参阅c-sharp-console-console-clear-problem
这篇文章也可能非常方便,非常相似的问题。
你可以做一些事情,比如在最后一个console.write的末尾放一个''r,让光标在行的开头。
然后读取您的输入并将新输入与原始输出相结合。由于读取行仅读取新数据,因此必须在原始数据中添加(覆盖(此新数据。
但是,仅当打印的行长度小于控制台宽度时,这才有效。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
namespace ConsoleApplication3
{
class Program
{
static string f_WriteIpAddresses()
{
IPHostEntry host;
string localIP = "?";
string retVal = "";
host = Dns.GetHostEntry(Dns.GetHostName());
foreach (IPAddress ip in host.AddressList)
{
if (ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
{
Console.Write(ip.ToString());
Console.Write(" - ");
retVal = ip.ToString() + " - ";
}
}
return retVal;
}
static void Main(string[] args)
{
Console.WriteLine("Your IP Address:");
string oldip = f_WriteIpAddresses();
Console.Write("[You can delete/modify address]'r");
string ip = Console.ReadLine();
string newip = ip + oldip.Substring(ip.Length);
}
}
}
上面应该给出一个新的IP地址,但有限制,例如,仅适用于一行等。