C# 如何删除文本框1逐次左删后剩余的最后一个单词
问题根源说明
现有代码在文本仅剩单个单词时失效的核心原因:
IndexOf(" ")方法在目标字符串不存在匹配的空格时,会返回 -1- 原有代码直接执行
int k = word.IndexOf(" ") + 1计算,得到的k值为0,此时Substring(0)会返回原字符串的全部内容,相当于没有执行任何删除操作,因此会卡在最后一个单词的状态反复循环。
调整后的实现代码
补充分支判断覆盖无空格的边界场景,完整可运行逻辑如下:
string word = textbox1.Text; if (!string.IsNullOrEmpty(word)) { int spaceIndex = word.IndexOf(" "); if (spaceIndex != -1) { // 存在分隔空格,删除左侧首个单词 textbox1.Text = word.Substring(spaceIndex + 1); } else { // 无空格时仅剩最后一个单词,直接清空文本 textbox1.Text = string.Empty; } }
调整后的运行效果
按照原有测试的执行次数逻辑,调整后对应结果为:
| 执行次数 | 文本框显示内容 |
|---|---|
| 初始状态 | this is my first time of learning c# |
| 1 | is my first time of learning c# |
| 2 | my first time of learning c# |
| 3 | first time of learning c# |
| 4 | time of learning c# |
| 5 | of learning c# |
| 6 | learning c# |
| 7 | c# |
| 8 | (空字符串) |
补充说明:如果遇到文本前后带多余空格的场景,可以在读取word内容时先调用
Trim()做前置处理,避免因无效空格导致的判断偏差。
内容的提问来源于stack exchange,提问作者Kcisrael Kicso Acquah
相关产品推荐
相关产品推荐

