覆盖文件,但只覆盖非空格的部分
我正在寻找一种用00000在.dat文件中覆盖某些零件的方法.为此,我有一个带有此类内容的StringBuilder: "00000000 0000000000000000 " 现在,我正在寻找一种用零覆盖文件中的零件的方法,而Justs则将零件的内容保留在空格中. 所以如果我有 "AUEUIGHEVjerhvgm,eiouhegfwoedjkjjjjjjjjjjjjjjje" 我希望它变成 "00000000Vjerhvgm,eio0000000000000000jjjjjjjjjje" 这种方法是否存在?还是我应该以另一种方式完成此任务? 解决方案 var byteCharZero = Convert.ToByte('0'); var stringBuilder = new StringBuilder(" 00000000 0000000000000000 "
16 2024-04-26
编程技术问答社区
删除富文本框的最后一行?
我喜欢删除以结尾的RichTextbox的最后一行;半olumn.我喜欢删除这条线直到;在最后一个半冠之前出现的半列. 示例: hello do not delete this line; hello this sentence will continue... untill here; 结果应为: hello do not delete this line; 我的代码: private void button1_Click_1(object sender, EventArgs e) { List myList = richTextBox1.Lines.ToList(); if (myList.Count > 0) { myList.RemoveAt(myList.Count - 1); richTextBox1.Lines = myList.ToArray()
8 2024-04-26
编程技术问答社区
StringBuilder.ToString()在字符串的开头和结尾添加''字符。
StringBuilder.ToString()在字符串的开头和结尾中添加'\'字符. 为什么这是? 在调用.toString()之前,字符串没有'\'字符. 解决方案 您在这里想到这些反斜线吗? 如果是这样,您正在误读输出:后斜切实际上并不在字符串中.它们仅在此处显示以使表示形式根据C#语法有效.例如,如果要使用Console.WriteLine输出字符串,则它不会有反弹. 公平地说,是不一致的. StringBuilder的调试视图没有后斜线,但字符串的调试视图. 其他解决方案 stringbuilder 除了附加的字符外,任何字符.也许您正在查看字符串构建器和 \字符实际上并不在字符串数据本身中,而是字符串的 display 的一部分. 编辑:这是您可以运行的测试 private static void TestStringBuilder() { StringBuilder builder = new StringBuil
8 2024-04-26
编程技术问答社区
脚本中的字符串生成器不显示在文本框中(WinForms, C#)。
我正在尝试使StringBuilder的内容显示在Winforms Textbox中,但是当我尝试编译程序时,窗口永远不会出现.这是我第一次进入Winforms和C#,现在我只使用了大约一周半的语言,所以这可能是一个简单的修复程序,我只是没有看到. public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { StringBuilder builder = new StringBuilder(); Random rand = new Random(); int[] builderList = new int[10000]; for (int i = 0; i
2 2024-04-25
编程技术问答社区
StringBuilder和容量?
我已经创建了测试应用程序进行测试,是StringBuilder将数据复制到另一个实例,并在其长度大于当前容量并在Ildasm.exe中进行验证,但似乎相同. . 如何验证StringBuilder将将其数据复制到新实例中,并通过指定的限制来增加缓冲区? 解决方案 如果要检查如何实现StringBuilder,请启动反射器并查看它. StringBuilder.Append(string)的实现如下 public StringBuilder Append(string value) { if (value != null) { string stringValue = this.m_StringValue; IntPtr currentThread = Thread.InternalGetCurrentThread(); if (this.m_currentThread != currentThread) {
6 2024-04-23
编程技术问答社区
P/调用一个函数传递给一个StringBuilder
在C#文件中我有 class Archiver { [DllImport("Archiver.dll")] public static extern void archive(string data, StringBuilder response); } 字符串数据是一个输入,而StringBuilder响应是该函数写入 的地方 存档函数原型(在C中编写)看起来像这样: void archive(char * dataChr, char * outChr); 它在datachr中接收一个字符串,然后进行 strcpy(outChr,"some big text"); 我称其为这样的东西: string message = "some text here"; StringBuilder response = new StringBuilder(10000); Archiver.archive(message,response);
6 2024-04-21
编程技术问答社区
使用多线程访问同一个字符串(StringBuilder)。
我的问题是,如果我有时在同一字符串上使用多线程 字符串不会被替换.(我在记事本上写了这本书,所以语法可能是 错误) 使用system.thread ...其他当然 class .... { private static StringBuild container = new StringBuilder(); static void Main(...) { container.Append(Read From File(Kind of long)); Thread thread1 = new Thread(Function1); Thread thread2 = new Thread(Function2); thread1.Start(); thread2.Start(); //Print out container } static void Function1
2 2024-04-21
编程技术问答社区
如何使StringBuilder内容的一部分粗体?
StringBuilder sb = new StringBuilder(); sb.Append( string.Format("{0} |{1} ", Name, Value) ); Display.Text = sb.ToString(); // Display is a WP7 TextBlock control 我想使"名称"大胆.可以这样做吗? 解决方案 您需要将文本放入 RichTextBox ,并在Paragraph中以单独的Run为单独的名称,如本示例中的MSDN: // Create a Run of plain text and some bold text. Run myRun1 = new Run(); myRun1.Text = "A RichTextBox with "; Bold myBold = new Bold(); myBold.Inlines.Add("initial content "); R
8 2024-04-20
编程技术问答社区
是否可以只用一次分配来连接一个字符串列表?
进行了一些分析后,我们发现我们的应用程序连接字符串的当前方式会引起大量的内存搅拌和CPU时间. 我们正在构建一个List的字符串,以连接50万个元素的订单,指的是价值数百兆字符串的弦乐.我们正在尝试优化我们应用程序的一小部分,因为它似乎是CPU和内存使用不成比例的. 我们做很多文本处理:) 从理论上讲,我们应该能够以单个分配和n个副本执行串联 - 我们可以知道我们的字符串中有多少个字符可用,因此它应该很简单,就像总结组件字符串的长度一样简单并分配足够的基础记忆以保持结果. 假设我们是从预先填充的List开始的,是否可以使用单个分配来串联该列表中的所有字符串? 当前,我们正在使用StringBuilder类,但是这存储了所有字符的中间缓冲区 - 因此我们有一个不断增长的块数组它.远非理想.块数组的分配并不可怕,但最糟糕的是它分配了中间角色阵列,这意味着n分配和副本. 我们现在可以做的最好的是调用List.T
14 2024-04-20
编程技术问答社区
使用StringBuilder Remove方法是否比在循环中创建一个新的StringBuilder更节省内存?
在C#中,哪个更有效的内存:选项#1或选项#2? public void TestStringBuilder() { //potentially a collection with several hundred items: string[] outputStrings = new string[] { "test1", "test2", "test3" }; //Option #1 StringBuilder formattedOutput = new StringBuilder(); foreach (string outputString in outputStrings) { formattedOutput.Append("prefix "); formattedOutput.Append(outputString); formattedOutput.Append(" pos
10 2024-04-19
编程技术问答社区
string.replace 与 StringBuilder.replace 的内存对比
我已将流以字节[]'RAW'(约为36MB)下载.然后,我将其转换为带有 的字符串 string temp = System.Text.Encoding.UTF8.GetString(raw) 然后我需要用" \ r \ n"替换所有" \ n",所以我尝试了 string temp2 = temp.Replace("\n","\r\n") ,但它抛出了一个"不记忆"的例外.然后,我尝试使用StringBuilder创建一个新字符串: string temp2 = new StringBuilder(temp).Replace("\n","\r\n").toString() 并且没有抛出例外.为什么首先会出现内存问题(我在这里仅处理36MB),但是为什么stringBuilder.replace()在另一个不这样做? 时可以工作? 解决方案 使用: string temp2 = temp.Replace("\n","\r\n") 对于字符
6 2024-04-18
编程技术问答社区
将字符串转义为XML-Attribute
我看了看 string suppe xml ,发现它非常有用. 我想做一个类似的事情:逃脱XML-Attribute中使用的字符串. 字符串可能包含\ r \ n. XmlWriter类产生类似于\ r \ n-> 的东西 我目前正在使用的解决方案包括xmlWriter和stringBuilder,非常丑陋. 有任何提示? edit1: 很抱歉让Larsh失望,购买我的第一种方法是 public static string XmlEscapeAttribute(string unescaped) { XmlDocument doc = new XmlDocument(); XmlAttribute attr= doc.CreateAttribute("attr"); attr.InnerText = unescaped; return attr.InnerXml; } 它不起作用. XmlEscapeAttribute
12 2024-04-18
编程技术问答社区
在替换StringBuilder中的字符串之前,是否需要检查(使用 "包含 "或 "索引 "等函数)?
是否有任何方法索引或包含在C#中.以下是代码: var sb = new StringBuilder(mystring); sb.Replace("abc", "a"); string dateFormatString = sb.ToString(); if (sb.ToString().Contains("def")) { sb.Replace("def", "aa"); } if (sb.ToString().Contains("ghi")) { sb.Replace("ghi", "assd"); } 您可能已经注意到,我一次又一次地使用ToString(),因为它每次都会创建新的字符串.您能帮我如何避免它吗? 解决方案 如果StringBuilder 不包含" def",那么执行替换不会引起任何问题,因此只需使用: var sb = new StringBuilder(mystring); sb.Replace("abc", "a")
2 2024-04-18
编程技术问答社区
字符串或StringBuilder的返回值?
如果我在方法中使用StringBuilder对象构建字符串,对: 返回StringBuilder对象,然后让调用代码调用ToString()? return sb; 或通过调用tostring()我自己返回字符串. return sb.ToString(); 我想如果我们要返回小或大字符串,这会有所作为.在每种情况下都适合什么?预先感谢. 编辑: 我不打算进一步修改调用代码中的字符串,但好点Colin Burnett. 主要是,返回StringBuilder对象还是字符串更有效?对字符串的引用会返回还是副本? 解决方案 如果要进一步修改字符串,则返回StringBuilder,否则返回字符串.这是一个API问题. 关于效率.由于这是一个含糊不清/一般的问题,没有任何细节,因此我认为可变与不变的问题比性能更重要.可突变性是让您的API返回可修改对象的API问题.弦长与此无关. 也就是说.如果您使用反射器查看stringBuilder
8 2024-04-18
编程技术问答社区
.NET的StringBuilder预加一行
我知道.NET System.Text.StringBuilder in .NET具有AppendLine()方法,但是,我需要将一条线预先付诸实践.我知道您可以使用Insert()附加字符串,但是我似乎无法使用一行,我可以使用下一个行字符吗?我正在使用vb.net,所以最好的答案是可取的,但是C#中的答案也可以. 解决方案 我可以使用下一行字符吗? 您可以使用 Environment.NewLine Environment.NewLine 获取为此环境定义的新线字符串. 例如: StringBuilder sb = new StringBuilder(); sb.AppendLine("bla bla bla.."); sb.Insert(0, Environment.NewLine); 甚至更好,您可以为此编写一个简单的扩展方法: public static class MyExtensions { public static S
4 2024-04-17
编程技术问答社区
在不调用ToString().Trim()的情况下,修剪StringBuilder结尾的空白,并返回到一个新的SB。
什么是从StringBuilder末端修剪空格的有效方法,而无需调用toString().trim(),然后返回新的SB new StringBuilder(sb.ToString().Trim()). 解决方案 以下是一种扩展方法,因此您可以这样称呼它: sb.TrimEnd(); 另外,它返回SB实例,允许您链接其他呼叫(sb.TrimEnd().AppendLine()). public static StringBuilder TrimEnd(this StringBuilder sb) { if (sb == null || sb.Length == 0) return sb; int i = sb.Length - 1; for (; i >= 0; i--) if (!char.IsWhiteSpace(sb[i])) break; if (i
4 2024-04-17
编程技术问答社区
StringBuilder.toString()抛出"索引超出范围"例外
我真的很感谢有人帮助我解决以下问题: 我会得到以下例外: 索引超出范围.必须是非负的,小于 收藏.参数名称:Chunklength stringBuilder.ToString(). 如果我将stringBuilder.ToString()放在手表中,这是奇怪的,它可以很好地工作. 解决方案 看起来这是一个多线程问题.我锁定线程以防止对StringBuilder的多访问. public void AddString(string s) { lock(this.LockObject) { StringBuilder.AppendLine(s); } }
8 2024-04-17
编程技术问答社区
StringBuilder.Append vs StringBuilder.AppendFormat
我想知道StringBuilder,我有一个问题,我希望社区能够解释. 让我们忘记代码可读性,其中哪一个是更快,为什么? StringBuilder.Append: StringBuilder sb = new StringBuilder(); sb.Append(string1); sb.Append("----"); sb.Append(string2); StringBuilder.AppendFormat: StringBuilder sb = new StringBuilder(); sb.AppendFormat("{0}----{1}",string1,string2); 解决方案 不知道string1和string2的大小是不可能说的. 呼吁上,这将是有利的. Append 可能导致缓冲区扩展多次. 但是,对Append的三个呼叫可能会触发缓冲区的增长,并且该检查将执行每个调用.如果字符串足够小且没有触发缓冲区的扩展,则它将比
16 2024-04-17
编程技术问答社区