标签: stringbuilder

问题:Java-Read套接字(蓝牙)输入流直到读取字符串(<!MSG>)

我使用以下代码(来自蓝牙聊天示例应用程序)来读取传入的数据并从读取的字节中构造一个字符串.我想阅读,直到这个字符串到达<!MSG>.如何使用read()函数插入此条件?

整个字符串看起来像这样<MSG><N>xxx<!N><V>yyy<!V><!MSG>.但read()函数不会立即读取整个字符串.当我显示字符时,我看不到同一行中的所有字符.看起来像:

发件人: <MS

发件人: G><N>xx

发件人: x<V

.

.

.

我在手机上显示字符(HTC Desire),然后使用windows hyperterminal发送数据.

如何确保所有字符都显示在一行?我曾尝试使用StringBuilder和StringBuffer而不是新的String()但问题是read()函数没有读取所有发送的字符.输入流的长度(字节)不等于发送的字符串的实际长度.从读取字节构造字符串正好发生.

感谢您对此提出的任何建议和时间.另外,如果有的话,请随时提出其他错误或更好的做法.

干杯,

马杜

public void run() {
        Log.i(TAG, "BEGIN mConnectedThread");
        //Writer writer = new StringWriter();
        byte[] buffer = new byte[1024];           
        int bytes;
        //String end = "<!MSG>";
        //byte compare = new Byte(Byte.parseByte(end));

        // Keep listening to the InputStream while connected
        while (true) {
            try {
                //boolean result = buffer.equals(compare);
                //while(true)   {
                    // Read from the InputStream
                    bytes = mmInStream.read(buffer);
                    //Reader reader = …
Run Code Online (Sandbox Code Playgroud)

java stringbuilder conditional inputstream

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

自定义'字符串'类

我试图弄清楚java类是如何工作的.

当我创建一个StringBuilder:

StringBuilder testString = new StringBuilder("Hello World!);
Run Code Online (Sandbox Code Playgroud)

如果我想,比如说,获取testSting引用的值,我可以简单地称之为:System.out.println(testString);

这是很酷的行为,但我不确定如何在我制作的类中复制它.

例如,如果我尝试重新实现我自己的版本StringBuilder,我将采取的方法(作为初学者)将是这样的:

class MyBuilder {
    char[] string; 


public MyBuilder(String s) {
    string = new char[s.length()];
    string = s.toCharArray();

}
Run Code Online (Sandbox Code Playgroud)

因此,要使字符串成为数组,我必须将其存储在类的数据字段中.但是,要在我的代码中访问它,我不能通过简单地调用变量名来打印它.我必须使用.property语法.因此,为了复制上面的例子,我必须键入System.out.println(testString.value);哪个不是很漂亮.

如何创建一个类,使其行为像StringStringBuilder并返回其值而无需手动访问数据字段?

java string stringbuilder

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

StringBuilder每行写入的字符数

您好我已经创建了一些C#使用a写入.txt文件的代码StringBuilder object,一切似乎都没问题,但问题是每行需要200个字符.例如,当程序在一行中设置一个10个字符的字符串变量值时(该值在数字字符中不同),该行必须包含190个空格.这是我的代码示例:

if (File.Exists(DLFile))
{
  using (StreamWriter sw = new StreamWriter(DLFile))
    {
      StringBuilder stringBuilder = new StringBuilder();
      stringBuilder.Append("001" + partNumber + " ").AppendLine(); 
      String innerString = stringBuilder.ToString();
      sw.WriteLine(innerString);
      sw.Close();
    }
}
Run Code Online (Sandbox Code Playgroud)

有一个variable名为'partNumber' 的字符串长度不一.有时长度可以是15或14或10,但是该长度和空白的总和可以是200(精确数量).谁能帮我这个?

c# stringbuilder maxlength

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

带有printf的Java StringBuilder.等价String.format

我正在使用StringBuilder来构建一个ver长查询.

StringBuilder sb = new StringBuilder();
sb.append("select * from x where name = %s'");
String.format(sb.toString, "John"); 
Run Code Online (Sandbox Code Playgroud)

什么相当于这样的东西?或者这实际上是正确的方法吗?

java string stringbuilder string.format

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

在字符串中使用条件运算符?

如何在字符串中使用条件运算符?

为什么缺少此字符串的值TO_DATE('单引号?我该怎么做才能解决这个问题?

StringBuilder sb = new StringBuilder();
//code...
sb.AppendLine("     '" + txtStatus.Text + "',");
sb.AppendLine("     TO_DATE(" + dtpEligDate.Value.ToString("yyyyMMddHHmmss") == "" ? "null" : dtpEligDate.Value.ToString() + "),");
sb.AppendLine("     '" + txtCoverageEndReason.Text == "" ? "null" : txtCoverageEndReason.Text + "',");
//code...
Run Code Online (Sandbox Code Playgroud)

字符串值:

'',
7/19/2013 9:04:35 AM),
',
Run Code Online (Sandbox Code Playgroud)

我的理解是,这不是由于缺少转义字符,而是因为使用了条件运算符.

谢谢您的帮助!

c# stringbuilder escaping conditional-operator

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

使用StringBuilder添加新行

我想向用户发送如下电子邮件:
这是验证码
用户名:xyz
代码:xyz

这是关于电子邮件的所有代码:

StringBuilder emailMessage = new StringBuilder();
emailMessage.Append("Here is the Verification Code.");
emailMessage.Append(Environment.NewLine);
emailMessage.Append("UserName: " + UsernameTextBox.Text).AppendLine();
emailMessage.AppendLine();
emailMessage.Append("Code:  " + newCode);
MailMessage email = new MailMessage();
email.To.Add(new MailAddress(emailAddress));
email.Subject = "Subject";
email.Body = emailMessage.ToString();
email.IsBodyHtml = true;
  //Send Email; 
SmtpClient client = new SmtpClient();
client.Send(email);  
Run Code Online (Sandbox Code Playgroud)

此代码使用单行发送邮件,即以下是验证码.用户名:xyz代码:xyx
我试过用过emailMessage.Append(Environment.NewLine);我也试过"\n",\r\n但没什么用.它有什么问题或者我错过了什么?

c# asp.net stringbuilder

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

使用C#从字符串中提取多个值

我在创建自己的论坛.引用消息时遇到问题.我知道如何在文本框中添加引用消息,但我无法弄清楚如何在发布后从字符串中提取值.在文本框中我有这样的事情:

[quote IdPost=8] Some quoting text [/quote]

[quote IdPost=15] Second quoting text [/quote]
Run Code Online (Sandbox Code Playgroud)

你能说出发布表格后从字符串中提取所有"IdPost"号码的最简单方法吗?

c# regex stringbuilder

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

String Builder和字符串大小

为什么StringBuilder大小大于字符串(~250MB).

请阅读问题.我想知道字符串中大小约束的原因,但不知道在stringbuilder中.我已经修复了读取文件的问题.

是的,我知道有操作,我们可以在字符串构建器上执行如append,replace,remove等.但是当我们无法从它获取ToString()并且我们无法直接写入时,它的用途是什么文件.我们必须让ToString()实际使用它,但由于它的大小超出了字符串范围,因此抛出异常.

因此,特别是使用字符串构建器,其大小比字符串大,因为我将大约1 GB的文件读入字符串构建器但不能将其转换为字符串.我阅读了StringBuilder上StringBuilder的所有优点和缺点,但我无法解释这一点

更新: 我想从文件中加载XMLDocument,如果读入块,则无法加载数据,因为根级节点需要其关闭标记,该标记将位于其他块块中

更新: 我知道这不是一个正确的方法现在我是不同的过程,但我仍然想知道字符串大小约束的原因,但不是在stringbuilder

更新: 我已修复我的问题,并想知道stringbuilder上没有内存约束的原因.

c# memory string stringbuilder

1
推荐指数
2
解决办法
2009
查看次数

为什么Regex和StringBuilder在删除空格时速度较慢?

我们正在处理与外部API集成通信的过程.到目前为止,由于命名不一致,文档不良以及不可靠的响应/错误消息,这一点令人头疼.

我们正在处理的事情之一是我们发送给他们的某些请求对字符串的长度有限制.没有任何突破性的,但任何包含任何超出长度要求的字符串的请求都会被拒绝并失败.

我们的解决方案是为字符串创建一个扩展方法,它只接受最大长度并返回从索引0开始的该长度的子字符串.

我是初级开发者,这是我的第一份工作,所以我知道我的解决方案可能不是最优雅或最有效的.无论哪种方式,我都提出了这样一个观点,即我们目前的扩展可能最终删除相关信息,同时包括可能毫无价值的空白空间,因为我们没有修剪或做任何事情来检查双重空间等.我的带领告诉我随意做一个扩展的重载,允许您选择删除空格.

我已经提出了3种解决方案,可以完全消除任何双重空间.我知道Regex方法是唯一一个真正删除所有空白区域的方法,其他两个方法是从背对背中删除任何两个空格.但是这个网站将仅在美国使用,因此我不确定是否有必要使用正则表达式的额外时间.

我发布这个的主要兴趣是我想知道是否有人可以解释为什么我使用StringBuilder的方法与其他两个相比效率低,它甚至比Regex慢,我预计它是三者中最快的.这里的任何见解都是值得赞赏的,也暗示了一些比我提出的更好的方法.

这是我的三个扩展:

    public static string SafeSubstringSomehowTheQuickest(this string stringToShorten, int maxLength)
    {
        if (stringToShorten?.Length < maxLength || string.IsNullOrWhiteSpace(stringToShorten)) return stringToShorten;

        stringToShorten = stringToShorten.Trim();
        int stringOriginalLength = stringToShorten.Length;
        int extraWhitespaceCount = 0;
        for (int i = 0; i < stringOriginalLength - extraWhitespaceCount; i++)
        {
            int stringLengthBeforeReplace = stringToShorten.Length;
            stringToShorten = stringToShorten.Replace("  ", " ");
            if(stringLengthBeforeReplace < stringToShorten.Length) { extraWhitespaceCount += stringToShorten.Length - stringLengthBeforeReplace; } 
        }

        return stringToShorten.Length > maxLength ? stringToShorten.Substring(0, maxLength) : stringToShorten;
    }

    public static …
Run Code Online (Sandbox Code Playgroud)

c# regex stringbuilder replace removing-whitespace

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

为什么我们需要在stringbuilder中使用toString方法

6号线和8号线有什么区别?它们都打印相同的字符串。为什么我们需要在StringBuilder中使用toString。

     StringBuilder s = new StringBuilder("hello");//line1
     System.out.println(s);//line2
     s.append("hi");//line3
     System.out.println(s);
     s.append("okk");
     System.out.println(s);//line 6
     s.toString();
     System.out.println(s);//line 8
Run Code Online (Sandbox Code Playgroud)

java string stringbuilder

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