C产品如何满足特定用户需求?
- 内容介绍
- 文章标签
- 相关推荐
本文共计794个文字,预计阅读时间需要4分钟。
只需字符串非空,即可使用以下代码安全地截掉末尾一个字符:
常见错误是忽略长度检查,导致 ArgumentOutOfRangeException:
string str = ""; string result = str.Substring(0, str.Length - 1); // 崩溃:Length - 1 = -1
- 务必先判断
str.Length > 0 - 如果原串可能为
null,还得加str?.Length > 0或用空合并str ?? "" -
Substring性能好,无分配开销(.NET 6+ 对短字符串有优化)
别用 TrimEnd 去“移除最后一位”
TrimEnd 的作用是**移除末尾所有匹配的字符**,不是“只移一个”。比如 "abc__".TrimEnd('_') 得到 "abc",但 "ab_c".TrimEnd('_') 还是 "ab_c" —— 因为末尾不是 '_'。
更危险的是,它会批量清除——"a___".TrimEnd('_') 变成 "a",完全不是“去一位”的语义。
本文共计794个文字,预计阅读时间需要4分钟。
只需字符串非空,即可使用以下代码安全地截掉末尾一个字符:
常见错误是忽略长度检查,导致 ArgumentOutOfRangeException:
string str = ""; string result = str.Substring(0, str.Length - 1); // 崩溃:Length - 1 = -1
- 务必先判断
str.Length > 0 - 如果原串可能为
null,还得加str?.Length > 0或用空合并str ?? "" -
Substring性能好,无分配开销(.NET 6+ 对短字符串有优化)
别用 TrimEnd 去“移除最后一位”
TrimEnd 的作用是**移除末尾所有匹配的字符**,不是“只移一个”。比如 "abc__".TrimEnd('_') 得到 "abc",但 "ab_c".TrimEnd('_') 还是 "ab_c" —— 因为末尾不是 '_'。
更危险的是,它会批量清除——"a___".TrimEnd('_') 变成 "a",完全不是“去一位”的语义。

