标签: stringbuilder

StringBuilder实例中的运行时错误

请帮助我理解这段代码有什么问题.(我正在尝试构建一个字符串,从文本文件中逐行获取部分字符串).

我 在行上得到一个运行时错误"在对象引用未设置为对象的实例中"strbuild.Append(str);

        StreamReader reader = new StreamReader("buf.txt", System.Text.Encoding.ASCII);
        StringBuilder strbuild = new StringBuilder();
        strbuild = null;

        while (reader.Peek() >= 0)
        {
            string str = null;
            str = reader.ReadLine().ToString();

            string segment = str.Substring(0, 1);

            if (segment == "A")
            {
                strbuild.Append(str); //here  i get an error
            }
            else if (segment == "B")
            {
                strbuild.Append("BET");
            }

        }
        printstr = strbuild.ToString();
        reader.Close();

        MessageBox.Show(printstr);
Run Code Online (Sandbox Code Playgroud)

c# string stringbuilder

0
推荐指数
2
解决办法
2006
查看次数

StringBuilder ArrayIndexOutOfBoundsException

public class Log {

    private static StringBuilder log = new StringBuilder();

    private static StringBuilder getLog() {

        return log;

    }


    public static void addToLog(String id, String name, String field, String operator, String value, String bValue) {

        Calendar calendar = Calendar.getInstance();
        String currentTime = formatter.format(calendar.getTime());
        getLog().append(currentTime); // line 114

    }

}
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪:

[java] Exception in thread "Thread-5" java.lang.ArrayIndexOutOfBoundsException 
[java]     at java.lang.String.getChars(String.java:863) 
[java]     at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:416) 
[java]     at java.lang.StringBuilder.append(StringBuilder.java:132) 
[java]     at com.retroficiency.system.Log.addToMatchingLog(Log.java:114)
Run Code Online (Sandbox Code Playgroud)

这种方法通常工作正常,但我们遇到了这个随机错误,我无法弄清楚为什么.有一个单独的方法可以将日志刷新到文件并使用以下方法清除它:

getLog().delete(0, getMatchingLog().length());
Run Code Online (Sandbox Code Playgroud)

我不认为这是一个Java bug?它变得太长了吗?谢谢你的帮助!

java logging stringbuilder

0
推荐指数
1
解决办法
2647
查看次数

如何以CSV格式输出逗号

所以要输出一些属性到csv,我正在使用stringbuilder它使用逗号作为逗号的自然分隔符.问题是当我在字符串中添加带逗号的字符串时,它会将它拆分为单独的列.所以对于前

temp.Append("ab,cd,ef")给了我3个单独的专栏.如何将其作为单个列输出,并且逗号完好无损.

这是捕获组的结果

match = Regex.Match(amt, "^\"([\\d,]+),(\\d\\d\\d)\"$");
Run Code Online (Sandbox Code Playgroud)

然后我做了

amt = Convert.ToString(match.Groups[1].Value) + Convert.ToString(match.Groups[2].Value);
Run Code Online (Sandbox Code Playgroud)

所以它需要123,123,123,123之类的逗号,并且我想输出完全相同的东西,最后一个逗号被句号替换.但它仍然会出现

123 123 123 123 123

在单独的列中

c# stringbuilder

0
推荐指数
1
解决办法
157
查看次数

C#不会循环我的循环

我试图绕过循环并将项目附加到StringBuilder.

但是,我无法在循环中做任何事情,我不认为我的循环甚至被访问.

以下是代码:

string initialString = "PRINT OUT PRODUCTS BELOW!\n";
StringBuilder stringBuilder = new StringBuilder(initialString);

for (int i = 0; i < products.Count(); i++)
{
   stringBuilder.Append(products.ElementAt(i));
   stringBuilder.Append("24");
   stringBuilder.Append("36");
}

stringBuilder.Append("45");

return stringBuilder.ToString();
Run Code Online (Sandbox Code Playgroud)

最终的"45"将打印出来,但24或36将不打印.

c# stringbuilder list winforms

0
推荐指数
1
解决办法
99
查看次数

如何将字符串放在换行符中?

我正在使用C#中的字符串.我有一个字符串,

StringBuilder sb = new StringBuilder();
sb.AppendLine(ValidatorMethod1());
sb.AppendLine(ValidatorMethod2());
Run Code Online (Sandbox Code Playgroud)

在调用"sb"之后ValidatorMethod1(),我调用a ValidatorMethod2()如图所示,两者都根据条件返回一个错误消息作为字符串.如果ValidatorMethod1()ValidatorMethod2()返回错误消息,那么一切都很好.但如果ValidatorMethod2()失败,那么从...返回的错误消息的长度ValidatorMethod2(是"0",但仍然有一行附加"sb",因此在ValidatorMethod1()错误消息后添加一个空的错误行.

我试过谷歌搜索,但链接像:

所以请任何人都可以提出一个想法,"如果长度大于零,则将返回的字符串放在换行符中"或什么都不做?

编辑:

大家好,我想我得到了正在寻找的合适解决方案.我不想在每个"sb"之后追加一行.但是,如果我有一个错误消息,那么,我想把它放在NEWLINE中.有人可以给我一个满足我需要的不同解决方案吗?

.net c# stringbuilder line-breaks

0
推荐指数
1
解决办法
213
查看次数

StringBuilder循环:可能尚未初始化局部变量

我有以下方法规范化给定的XML标记名称:

public static String normaliseTagName(String tagName) {
    // Return a given empty tag name.
    if (tagName.length() == 0) {
        return tagName;
    }

    // Replace invalid start.
    if (isInvalidXMLStart(tagName.charAt(0))) {
        tagName = XML_REPLACEMENT + tagName;
    }

    // Replace invalid characters.
    StringBuilder normalised;
    boolean invalidFound = false;
    for (int i = 0; i < tagName.length(); i++) {
        if (isInvalidXMLChar(tagName.charAt(i))) {
            if (!invalidFound) {
                normalised = new StringBuilder(tagName.substring(0, i));
                invalidFound = true;
            }
            normalised.append(XML_REPLACEMENT); // COMPILER ERROR
        } else if (invalidFound) {
            normalised.append(tagName.charAt(i)); …
Run Code Online (Sandbox Code Playgroud)

java stringbuilder compiler-errors initialization

0
推荐指数
1
解决办法
856
查看次数

StringBuilder就像PreparedStatement一样

有没有办法创建像我们创建PreparedStatements的字符串?我的意思是用'?'创建整个字符串 我需要稍后插入值,然后根据条件插入此值.在StringBuilder中,我没有找到这样的功能,只是通过offset附加或插入.

java stringbuilder

0
推荐指数
1
解决办法
1020
查看次数

在c#中将String Builder转换为Integer

我是C#的新程序员,我想知道是否有从StringBuilder转换为int的直接方法.我有以下代码.在代码的最后一行,我收到一个错误.

StringBuilder newnum = new StringBuilder();
for (int i = x.Length - 1; i >= 0; i--)
{
    newnum.Append(x[i]);  
}
int x = Convert.ToInt32(newnum);
Run Code Online (Sandbox Code Playgroud)

c# stringbuilder

0
推荐指数
1
解决办法
5765
查看次数

单独可用的小时分秒至HH:mm:ss格式

我有一个单独存储小时,分钟,秒的对象.

public static class ETA {
        private int hours;  // 2 (single or double digit 24 hour format)
        private int minutes; // 0 (single or double digit)
        private int seconds;  // 0 (single or double digit)

// getters.. setters..
}
Run Code Online (Sandbox Code Playgroud)

我需要将此时间保存到csv文件中,其中包含正确的字符串"02:00:00"格式为HH:mm:ssNOT as "2:0:0";

我尝试使用StringBuilder的append()方法,但想出了非常混乱的代码.这是我试过的......

ETA e = new ETA();
StringBuilder time = new StringBuilder();
if (e.getHour() < 10) {
time.append("0" + e.getHour());
} else {
time.append(e.getHour());
}
// similarly for minute and seconds, and …
Run Code Online (Sandbox Code Playgroud)

java stringbuilder

0
推荐指数
1
解决办法
72
查看次数

为什么我无法在LINQ Select()查询中向StringBuilder插入值

为什么我不能通过LINQ Select()查询将列表中的字符串值插入StringBuilder ?

给定下面的代码,我希望构建的字符串结尾为,{CBA}但实际上是{}

我想念什么?

var testList = new List<string>
{
   "A",
   "B",
   "C"
};

var testStringBuilder = new StringBuilder("{}");
testList.Select(y => testStringBuilder.Insert(1,y));
Run Code Online (Sandbox Code Playgroud)

c# linq stringbuilder

0
推荐指数
1
解决办法
95
查看次数