class Test {
public string GetData() {
StringBuilder sb = new StringBuilder();
sb.Append("aassffss");
sb.Append("bbhhhhh");
return sb.ToString();
}
}
// calling from multithreads,as below,
// from each thread i will create new
// instance and call method.
Test t = new Test();
t.GetData();
Run Code Online (Sandbox Code Playgroud)
根据MSDN.类的任何实例成员StringBuilder都不是线程安全的.所以我相信这不是线程安全的.我对么?
我正在使用 String Builder 创建 SQL 更新查询,如果末尾有逗号,我需要将其删除。
例如:
Dim query As New StringBuilder
query.AppendLine("Update Vendor")
If Not String.IsNullOrEmpty(vendInfo.Name) Then
query.AppendLine("Set VendorName= @VendorName, ")
End If
If Not String.IsNullOrEmpty(vendInfo.VendorType) Then
query.AppendLine("VendorType= @VendorType, ")
End If
Run Code Online (Sandbox Code Playgroud)
最后一项的查询错误,因为总会有一个逗号。一旦我完成了我所有的 If 语句,我想从末尾删除一个逗号。
有任何想法吗?
我想重复.-40次并将其保存到string使用中StringBuilder
为什么这不起作用?
string result = new StringBuilder("").Append(".-",0,40).ToString();
Run Code Online (Sandbox Code Playgroud)
我知道其他解决方案,但我想使用StringBuilder
通过摊销分析,我们知道N使用StringBuilder#append方法插入需要O(N)时间。但是,这是我迷路的地方。考虑这inputString是来自用户的输入字符串。
for (int i = 0; i < N; i++) {
s.append(inputString);
// where s is an empty StringBuilder object at the beginning
// and inputString is the string that is taken from the user
}
Run Code Online (Sandbox Code Playgroud)
O(inputString.length * N)由于append()将输入字符串复制到时间的末尾,时间复杂度应该为StringBuilder N吗?为什么我们认为这append()需要O(1)时间复杂性,而应该考虑O(inputString.length)呢?
我检查的几乎所有地方都将其视为O(1),例如https://quora.com/What-is-the-complexity-of-Java-StringBuffer-append以及此简单代码段的复杂性是什么?
在 Java 中,以下代码是一种实现方式。
StringBuilder result = new StringBuilder();
result.append(someChar);
result.append("\n");
Run Code Online (Sandbox Code Playgroud)
在kotlin中这样做的惯用方式?
我的目标是简单地替换子字符串,但非常频繁。该程序在Android中运行。
比如我有一个 string ={a} is a good {b}.和一个 map= {{a}=Bob, {b}=boy},结果应该是Bob is a good boy.我需要处理不同字符串的这种替换最多 400 次对等秒,因为 map 的值会实时更新。
但是我使用 trie 树和 Aho-Corasick 自动机来获得高性能,这是核心片段:
val builder: StringBuilder
private fun replace(str: String): String {
if (!getFail) {
getFail()
}
var p = 1
builder.setLength(0)
for (c in str) {
builder.append(c)
if (c.toInt() !in 0..126) {
continue // ignore non-ascii char
}
var k = trie[p][c.toInt()]
while (k > 1) {
// find a tag
if (end[k] …Run Code Online (Sandbox Code Playgroud) 我试图将一个字符串作为输入并返回只有元音反转的字符串。它没有错误,但不是没有错误。它在Test19()和Test20 上失败。没有想法如何解决这个问题或为什么我在这个测试中遇到问题。所有其他测试通过。第一个代码块是我的代码,然后是我在第二个块中创建的测试。
这是该页面的链接,其中详细介绍了我所做的测试的更多信息。 Nunit.org StringAssert (NUnit 2.2.3)
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Vowels
{
public class reverseVowels
{
public static bool IsVowel(char c)
{
char[] vowels = new[] { 'a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U' };
return vowels.Any(ch => ch == c);
}
public static string reverseVowelsOfString(string s)
{
List<char> list = (from char c in s
where IsVowel(c)
select c).ToList();
StringBuilder sb = new StringBuilder();
foreach (char v in …Run Code Online (Sandbox Code Playgroud) 这是输入。
public static void main(String[] args){
StringBuilder builder = new StringBuilder("hello");
printBuilder(builder);
// append
builder.append(" everyone");
printBuilder(builder);
builder.append(", what's up?");
printBuilder(builder);
}
private static void printBuilder(StringBuilder dataBuild){
StringBuilder build = new StringBuilder(dataBuild);
System.out.println("data = " + build);
System.out.println("length = " + build.length());
System.out.println("capacity = " + build.capacity());
int addressBuild = System.identityHashCode(build);
System.out.println("address = " + Integer.toHexString(addressBuild);
}
Run Code Online (Sandbox Code Playgroud)
这是输出。
我正在处理一个包含大量遗留代码的应用程序。我经常看到的是在 StringBuilder 参数中使用“+”进行字符串连接。
例子:
StringBuilder sb = new StringBuilder("This "
+ "looks "
+ "rather "
+ "weird "
+ "to "
+ "me.")
Run Code Online (Sandbox Code Playgroud)
据我所知,编译器用 StringBuilder().append() 替换了使用 + 运算符的字符串连接。
恐怕现在编译器会创建一个临时的 StringBuilder 来执行连接,然后转换为 String() 并将结果插入现有的 StringBuilder。
我的问题是:编译器是否能够优化嵌套的 StringBuilder?如果不是,我应该重写代码以节省几个 CPU 周期吗?它显然是有效的,但每当我看着它时它都会伤害我的眼睛。
感谢您的任何见解!
我对 C# 非常陌生,当我尝试使用 stringbuilder 执行 sql 查询时遇到了一些问题。
\n这是名为 的表的一部分:
\n| ID | Name | InternalID |\n|:----:|:---------:| :---------:|\n| 1 | Emory Lu | 84765 |\n| ... | ... | ... |\n| 8 | John Smith| 52455 |\n| 9 | John smith| 49 |\n| ... | ... | ... |\nRun Code Online (Sandbox Code Playgroud)\n请注意,在此表中为 John Smith 分配了两个不同的 InternalID(字符串类型)。在第二条记录中,他的姓氏以小写“s”开头。
\n我在输入员工姓名\xef\xbc\x9a时执行了一个简单的sql查询来选择员工的InternalID(字符串类型)
\npublic DataTable findInternalID(string name)\n{\n RecordConnection.Open();\n DataTable output = new DataTable();\n OleDbCommand bdCommand = RecordConnection.CreateCommand() as OleDbCommand;\n StringBuilder x = new StringBuilder();\n\n …Run Code Online (Sandbox Code Playgroud)