c# - 如何在 C# 中动态删除字符串中的最后一个字符
问题描述
我正在创建一个控制台应用程序,用户可以在该应用程序上输入火车站并找到火车站。为此,我Console.ReadKey().Key
每次都将 附加到一个字符串中。
当用户键入不正确的字母时,我希望ConsoleKey.Backspace
删除字符串中的最后一个字符。
private void SetDepartingFrom()
{
String searchQuery = "";
ConsoleKey keyIn;
while ((keyIn = readKey(searchQuery)) != ConsoleKey.Enter)
{
if (keyIn == ConsoleKey.Backspace)
{
searchQuery.TrimEnd(searchQuery[searchQuery.Length - 1]);
}
else
{
searchQuery += keyIn.ToString();
}
}
}
private ConsoleKey readKey(String searchQuery)
{
Console.Clear();
Console.WriteLine("Stations Found:");
if (searchQuery != "")
App.Stations.FindAll(x => x.GetName().ToUpper().Contains(searchQuery.ToUpper())).ForEach(x => Console.WriteLine(x.GetName()));
else
Console.WriteLine("No Stations found...");
Console.Write("Search: " + searchQuery);
return Console.ReadKey().Key;
}
我尝试了以下方法:
if (keyIn == ConsoleKey.Backspace)
searchQuery.TrimEnd(searchQuery[searchQuery.Length - 1]);
if (keyIn == ConsoleKey.Backspace)
searchQuery.Remove(searchQuery.Length -1);
if (keyIn == ConsoleKey.Backspace)
searchQuery[searchQuery.Length -1] = "";
没有一个工作。我知道字符串在 C# 中是不可变的,但是,这是可能的还是有更好的方法来实现这一点?
提前致谢。
解决方案
String 是不可变的,因此您必须使用 TrimEnd 返回的值。
searchQuery = searchQuery.TrimEnd(searchQuery[searchQuery.Length - 1]);
在这种情况下,我认为Substring方法会更合适。
推荐阅读
- python - 从数据框中删除列时出现问题(最新的 dask 2021.04.1)
- database - 如何将我的 MongoDB shell 的下载目录添加到我的 $PATH 变量中?
- python - 如果不成为 Django 中的模型,一个课程会很好吗?
- maps - 为什么无法深度链接到 Here WeGo App?
- python - 为什么当一个子类继承/不继承 Python 中的第三个类时,这个类的 MRO 会发生变化?
- c# - 在C#中单击标签后将文本保存在多行文本框中
- python - 如何将 json 文件标准化为 pandas 数据框?
- python-3.x - 从 Django 项目目录上的终端执行 Pylint 命令时出错
- python - (M1 Mac)Geodjango GDAL:mach-o,但架构错误
- c - openssl AES CTR 在 C 中发送输出