这是调试器。 我不明白为什么TrimEnd删除's'字符。 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(@"\\", @"\");
答案 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}}不在数组中,它停止工作。