我是 C# 新手,所以请原谅我的错误。
我想在每次调用该代码段时替换字符串的某些部分(每次调用 2-4 次)。我想知道就性能而言使用哪种方法更好:string.Replace或stringBuilder.Replace()?
如果这段代码被并发调用 10.000 次会怎样?
在 C# 中,我有一个StringBuilder sb我在 for 循环中多次附加到它。
是否有一种简单的方法StringBuilders可以吐出附加到它的最后一个字符串?
在 vb.net(或 C#)中,我不知道如何将 stringbuilder 与字符串进行比较。我已经搜索了很多,但找不到答案。我必须编写自己的例程。没有更好的办法吗?
这不起作用:
Dim s As String = "abc"
Dim sb As New StringBuilder("abc")
If sb.Equals(s) Then
Console.WriteLine(sb.ToString() + " DOES equal " + s)
Else
Console.WriteLine(sb.ToString() + " does NOT equal " + s)
End If
Run Code Online (Sandbox Code Playgroud)
该代码的结果是:abc 不等于 abc
没有某种方法可以在不编写自己的例程的情况下将 stringbuilder 与 string 进行比较吗?很明显我遗漏了一些东西,因为我在任何地方都找不到这个问题。
我有以下问题,我试图将内容从我的 StringBuilder 获取到我的 .csv 文件:
public String GetCSV()
{
System.Text.StringBuilder sb = new StringBuilder();
sb.Append(m_ID.ToString());
sb.Append(";");
sb.Append(m_Starttime.ToString());
sb.Append(";");
sb.Append(m_EndTime.ToString());
sb.Append(";");
sb.Append(m_IsSerie.ToString());
sb.Append(";");
sb.Append(m_Title);
sb.Append(";");
sb.Append(m_Description);
sb.Append(";");
sb.Append(m_Lastchange.ToString());
sb.Append(";");
return sb.ToString();
WriteCSV();
}
public void WriteCSV()
{
string csvpath = @"c:\Temp\Kalender.csv";
if (File.Exists(csvpath))
{
File.Delete(csvpath);
}
using (StreamWriter sw = File.CreateText(csvpath))
{
foreach (string CalendarItem in CalendarItem)
{
if (sb.Length > 0)
sb.Append(", ");
sb.Append(part);
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在我已经知道如何创建 CSV 文件了,但我不知道如何用来自 StringBuilder 的内容填充它,我确定这将由 foreach 循环处理,对吗?
StringBuilder builder = new StringBuilder();
builder.Append(" \(Nested \(parentheses\) dont need a backslash.\) \(But a single \\(parenthe)");
for(int i=0;i<builder.Length;i++)
{
if(data[i] == "\" && data[i-1] == "\")
data[i] += " ";
}
Run Code Online (Sandbox Code Playgroud)
如果字符串中有两个反斜杠。我需要在它们之间添加一个空格。在上面的代码中,我在 if 条件下收到错误“将字符表示为 utf-16 代码单元”。因为,我正在使用它创建一个 PDF 文件。提前致谢。
StringBuilder是否比连接十几个字符串慢?编译器如何优化字符串连接,以便使用"+"连接十几个字符串将比StringBuilder更好?
从一本书(Ben Watson编写)中可以看出:
字符串连接:对于已知(在编译时)数量的字符串的简单连接,只需使用'+'运算符或String.Concat方法.这通常比使用StringBuilder更有效.string result = a + b + c + d + e + f; 在字符串数量可变且可能大于几十个之前,不要考虑StringBuilder.编译器将以减少内存开销的方式优化简单字符串连接.
我被指定对一个项目进行重构,我遇到了这种情况
this.path = DESTINY + deploy.name() + FILE_SEPARATOR + delivery.getSystem().getCode()
+ FILE_SEPARATOR + delivery.getName() + FILE_SEPARATOR + delivery.getEnviroment().getName();
Run Code Online (Sandbox Code Playgroud)
我想将它重构为这样的:
StringBuilder tmpPath = new StringBuilder();
tmpPath.append(DESTINY);
tmpPath.append(deploy.name());
tmpPath.append(FILE_SEPARATOR);
tmpPath.append(delivery.getSystem().getCode());
tmpPath.append(FILE_SEPARATOR);
tmpPath.append(delivery.getName());
tmpPath.append(FILE_SEPARATOR);
tmpPath.append(delivery.getEnviroment().getName());
this.path = tmpPath.toString();
Run Code Online (Sandbox Code Playgroud)
或者
StringBuilder path = new StringBuilder();
...
this.path.append(DESTINY);
this.path.append(deploy.name());
this.path.append(FILE_SEPARATOR);
this.path.append(delivery.getSystem().getCode());
this.path.append(FILE_SEPARATOR);
this.path.append(delivery.getName());
this.path.append(FILE_SEPARATOR);
this.path.append(delivery.getEnviroment().getName());
Run Code Online (Sandbox Code Playgroud)
最快的方法是什么?
一个字节不能容纳来自世界上各种语言的字符的 unicode。所以使用字节数组我们不能有不同语言的字符串。为什么这些类使用字节数组而不是字符数组?
更新:
class First
{
public static void main(String[] args)
{
System.out.println();
String s = "\u0935\u0902\u0926\u0947 \u092e\u093e\u0924\u0930\u092e\u094d";
String s1 = "???? ??????";
System.out.println(sb);
System.out.println(sb1);
}
}
Run Code Online (Sandbox Code Playgroud)
我认为上面的字符串每个字符需要两个字节。它们如何可以容纳在一个字节中?
我想连接或附加特殊字符作为冒号:在字符串中的每 2 个字符之后。
例如:原始字符串如下:
String abc =AABBCCDDEEFF;
Run Code Online (Sandbox Code Playgroud)
连接或追加冒号后如下:
String abc =AA:BB:CC:DD:EE:FF;
Run Code Online (Sandbox Code Playgroud)
所以我的问题是我们如何在android中实现这一点。
提前致谢。
从我在网上看到的情况来看,人们似乎建议使用 toString() 方法,但是文档指出:
创建此对象的字符串表示形式。默认表示取决于平台。在 java 平台上,它是类名、“@”和十六进制对象的哈希码的串联。
所以看起来使用这种方法可能会导致一些问题?
还有 mkString 和 result()。后者似乎最有意义。但我不确定这 3 种方法之间的区别是什么,以及是否应该使用 result() 。
stringbuilder ×10
string ×6
c# ×5
java ×2
.net ×1
adobe-reader ×1
android ×1
csv ×1
java-9 ×1
kotlin ×1
pdf ×1
refactoring ×1
scala ×1
streamwriter ×1
stringbuffer ×1
utf-16 ×1
vb.net ×1