You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中如何正确使用TrimStart()、TrimEnd()方法裁剪字符串

问题描述

我在做字符串解析时写了下面的C#代码:

string str = @"UdPbC\0\s:SI0002,d:IC0002,n:234*66$SIACK," + random.Next(4) + "*C4<CR><LF>\r\n";
str = str.TrimStart('$');
Debug.WriteLine(str);

运行之后输出的字符串和原字符串完全没区别,我想要把字符串里$符号之前的所有内容都裁掉,该怎么实现?

问题原因

你用错TrimStart的功能了。这个方法的逻辑是从字符串的最开头位置开始,连续删除所有你传入的指定字符,直到碰到第一个不在删除列表里的字符就立刻停止,不会遍历整个字符串找你指定的符号。
你的原字符串开头第一个字符是U,根本不是你传入的$,所以TrimStart直接就不做任何处理,输出自然和原字符串一致。

正确实现方法

TrimStart本身就不适合做「删除某个指定字符前所有内容」的场景,直接用IndexOf找$的位置再截取就行:

  • 如果你要保留$本身,用下面的代码:
int dollarPos = str.IndexOf('$');
// 处理字符串里确实存在$的情况,避免索引报错
if (dollarPos != -1)
{
    str = str.Substring(dollarPos);
}
  • 如果你连开头的$也不想保留,把截取的起始位置改成dollarPos + 1就可以:
int dollarPos = str.IndexOf('$');
if (dollarPos != -1)
{
    str = str.Substring(dollarPos + 1);
}

内容的提问来源于stack exchange,提问作者KooEunBam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 19:36:46