我有一个循环,每次循环时都会附加一个新行。当它完成时,我将StringBuilder.ToString()
复制到剪贴板并将其粘贴到记事本中,闪烁的光标保留在它下面的新行上,而不是在最后一个字符串的末尾。如何防止这种情况发生,光标保留在最后一个字符串的末尾,而不是在新行的下面?
StringBuilder sbItems = new StringBuilder();
for (int i = 0; i < 10; i++)
{
sbItems.AppendLine("Item #" + i.ToString());
}
Clipboard.SetText(sbItems.ToString());
答案 0 :(得分:1)
我看到您复制到剪贴板的字符串以新行结束。当然这个新行被粘贴,因此你的光标在新行上。
不知何故,你必须摆脱这条新线。执行此操作的方法取决于您的精确规格:
如果将字符串复制到剪贴板,则将完整的字符串复制到剪贴板
如果这是您的规范,那么粘贴您复制的字符串的每个人都将以字符串末尾的新行结束。如果贴纸是一个你无法控制的程序,你就无法做任何事情。
另一个规范可能是:
如果将字符串复制到剪贴板,则除了可能的终止新行之外的所有行都将复制到剪贴板
这样你就可以得到你想要的东西,贴纸将看不到终止的新线。但请注意,这样剪贴板上的字符串不是原始字符串。
代码(当然这可以优化,只显示小步骤)
StringBuilder sbItems = FillStringBuilder(...);
// before copying, remove a possible new line character
// for this we use property System.Environment.NewLine
var stringToCopyToClipboard = sbItems.ToString();
if (stringToCopyToClipboard.EndsWith(Environment.NewLine)
{
int newLineIndex = stringToCopyToClipboard.LastIndexOf(Environment.NewLine);
stringToCopyToClipboard = stringToCopyToClipboard.Substring(0, newLineIndex);
}
Clipboard.SetText(stringToCopyToClipboard);
答案 1 :(得分:0)
只需Trim()
字符串
返回一个新字符串,其中包含所有前导和尾随的匹配项 当前String对象中的一组指定字符 除去。
Clipboard.SetText(sbItems.ToString().Trim());