c#TrimEnd删除多于需要的?

时间:2013-11-27 07:38:54

标签: c# .net windows registry

这是调试器。 我不明白为什么TrimEnd删除's'字符。 Before TrimEnd TrimEnd()之后 After TrimEnd 有什么建议吗?

recPath是类中的私有字符串。 代码:

        recPath = "";
        recursiveFindPathRoot(node);
        string[] argv = Regex.Split(recPath, "\\\\");

        //Current root path
        string rootdat = argv[0];

        //Current lastkey
        string valdat = argv[argv.Length - 3];
        string lastkey = valdat + "\\\\";

        string[] val_dat =  Regex.Split( valdat , "--");

        //Getting value and data
        string value = val_dat[0];
        string data = val_dat[1];
        string caption = value;

        CollectDataInput("Please edit selected key", caption, out value, out data);

        recPath = recPath.TrimEnd(lastkey.ToCharArray());
        recPath = recPath.Replace(@"\\", @"\");

3 个答案:

答案 0 :(得分:5)

问题是你要传递lastkey.ToCharArray()作为要修剪的字符列表。其中包含字符s,因此s的{​​{1}}也会被修剪。 (同样反斜杠。)来自TrimEnd的文档:

  

TrimEnd方法从当前字符串中删除trimChars参数中的所有尾随字符。当在字符串末尾遇到不在trimChars中的第一个字符时,修剪操作停止。

我怀疑你将字符用作单个字符串。

如果您只想从Fonts的末尾删除lastKey,可以使用:

recPath

答案 1 :(得分:1)

MSDN:

  

TrimEnd方法从当前字符串中删除所有尾随   trimChars参数中的字符。    当在字符串末尾遇到不在trimChars中的第一个字符时,修剪操作停止。

基本上,在你的lastKey字符串中你有char'\'和char'',但是没有't'...所以它删除了所有最后的字符并停在t的“字体”。

TrimEnds不会删除字符的连续顺序。改为使用Substring(或LINQ)。

答案 2 :(得分:1)

您提供了一个字符串logPixels--50\\\\,在转换为char数组后,它包含s和其他字符。

现在trimEnd开始在字符串的末尾找到这些字符并继续删除,直到它到达t font的{​​{1}}不在数组中,它停止工作。