stringbuilder

Converting a StringBuilder To Integer Values In Java [duplicate]

六月ゝ 毕业季﹏ 提交于 2019-12-10 00:34:33
问题 This question already has answers here : How to split a string in Java (34 answers) Closed 4 years ago . Well the question is very simple. Lets say there is a StringBuilder sb Inside of sb numbers like this: "25 9631 12 1895413 1 234564" How to get those numbers one by one and initialize them into an ArrayList<Integer> list or to be more specific is it possible? Thanks for checking! 回答1: Try to split that string like: String[] numbers = sb.toString().split(" ");//if spaces are uneven, use \\s

如何将list集合转成String对象

浪子不回头ぞ 提交于 2019-12-09 22:43:33
使用Stringutils中的join方法: 方法一: public String listToString(List list, char separator) {   return org.apache.commons.lang.StringUtils.join(list.toArray(),separator); } 方法二: public String listToString(List list, char separator) {     StringBuilder sb = new StringBuilder();     for (int i = 0; i < list.size(); i++) {         if (i == list.size() - 1) {            sb.append(list.get(i));         } else {           sb.append(list.get(i));           sb.append(separator);         }      }   return sb.toString();} 方法三: public String listToString(List list, char separator) { StringBuilder sb = new

java中stringBuilder的用法

℡╲_俬逩灬. 提交于 2019-12-09 16:18:07
String 对象是不可改变的。每次使用 System.String 类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。在需要对字符串执行重复修改的情况下,与创建新的 String 对象相关的系统开销可能会非常昂贵。如果要修改字符串而不创建新的对象,则可以使用 System.Text.StringBuilder 类。例如,当在一个循环中将许多字符串连接在一起时,使用 StringBuilder 类可以提升性能。   通过用一个重载的构造函数方法初始化变量,可以创建 StringBuilder 类的新实例,正如以下示例中所阐释的那样。 StringBuilder MyStringBuilder = new StringBuilder("Hello World!"); ( 一 ) 设置容量和长度   虽然 StringBuilder 对象是动态对象,允许扩充它所封装的字符串中字符的数量,但是您可以为它可容纳的最大字符数指定一个值。此值称为该对象的容量,不应将它与当前 StringBuilder 对象容纳的字符串长度混淆在一起。例如,可以创建 StringBuilder 类的带有字符串“ Hello ”(长度为 5 )的一个新实例,同时可以指定该对象的最大容量为 25 。当修改 StringBuilder 时,在达到容量之前,它不会为其自己重新分配空间

string escape into XML-Attribute

杀马特。学长 韩版系。学妹 提交于 2019-12-09 15:39:41
问题 I had a look at string escape into XML and found it very useful. I would like to do a similar thing: Escape a string to be used in an XML-Attribute. The string may contain \r\n. The XmlWriter class produces something like \r\n -> The solution I'm currently using includes the XmlWriter and a StringBuilder and is rather ugly. Any hints? Edit1: Sorry to disappoint LarsH, buy my first approach was public static string XmlEscapeAttribute(string unescaped) { XmlDocument doc = new XmlDocument();

.NET StringBuilder preappend a line

我与影子孤独终老i 提交于 2019-12-09 14:29:18
问题 I know that the System.Text.StringBuilder in .NET has an AppendLine() method, however, I need to pre-append a line to the beginning of a StringBuilder . I know that you can use Insert() to append a string, but I can't seem to do that with a line, is there a next line character I can use? I am using VB.NET, so answers in that are preferable, but answers in C# are ok as well. 回答1: is there a next line character I can use? You can use Environment.NewLine Gets the newline string defined for this

编写高质量代码改善C#程序的157个建议[正确操作字符串、使用默认转型方法、却别对待强制转换与as和is]

只愿长相守 提交于 2019-12-09 13:39:38
前言   本文主要来学习记录前三个建议。   建议1、正确操作字符串   建议2、使用默认转型方法   建议3、区别对待强制转换与as和is 其中有很多需要理解的东西,有些地方可能理解的不太到位,还望指正。 建议1、正确操作字符串   字符串应该是所有编程语言中使用最频繁的一种基础数据类型。如果使用不慎,我们就会为一次字符串的操作所带来的额外性能开销而付出代价。本条建议将从两个方面来探讨如何规避这类性能开销:   1、确保尽量少的装箱   2、避免分配额外的内存空间 先来介绍第一个方面,请看下面的两行代码: String str1="str1"+9; String str2="str2"+9.ToString(); 从IL代码可以得知,第一行代码在运行时完成一次装箱的行为,而第二行代码中并没有发生装箱的行为,它实际调用的是整型的ToString()方法,效率要比装箱高。所以,在使用其他值引用类型到字符串的转换并完成拼接时,应当避免使用操作符“+”来完成,而应该使用值引用类型提供的ToString()方法。 第二方面,避免分配额外的内存空间。对CLR来说,string对象(字符串对象)是个很特殊的对象,它一旦被赋值就不可改变。在运行时调用System.String类中的任何方法或进行任何运算(如“=”赋值、“+”拼接等),都会在内存中创建一个新的字符串对象

Java之StringBuilder类

依然范特西╮ 提交于 2019-12-08 20:54:38
StringBuilder类的由来 由于String类的对象内容不可改变(底层是一个被final修饰的数组),所以每当我们进行字符串拼接时,总是会在内存中创建一个新的对象。如果对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费空间。为了解决这一问题,我们可以使用java.lang.StringBuilder类。 StringBuilder的简介 查阅 java.lang.StringBuilder 的API,StringBuilder又称为可变字符序列,它是一个类似于 String 的字符串缓冲区,通过某些方法调用可以改变该序列的长度和内容。 原来StringBuilder是个字符串的缓冲区,即它是一个容器,容器中可以装很多字符串 。并且能够对其中的字符串进行各种操作。它的内部拥有一个数组用来存放字符串内容,进行字符串拼接时,直接在数组中加入新内容。StringBuilder会自动维护数组的扩容(默认16字符空间,超过自动扩充)。 常用构造方法有2个: public StringBuilder():构造一个空的StringBuilder容器。 public StringBuilder(String str):构造一个StringBuilder容器,并将字符串添加进去。 StringBuilder常用的方法有2个: public

Qt string builder in for loop

匆匆过客 提交于 2019-12-08 16:23:32
问题 following this and this documentation I would use the QStringBuilder in a for loop. The code where I should apply it is QStringList words; QString testString; for (auto it = words.constBegin(); it != words.constEnd(); ++it) { testString += "[" + *it + "] "; } However I don't understand how I could write it to use the QStringBuilder as here I'm doing an assignment, instead the QStringBuilder requires me to use the % operator and do only one assignment following the docs. 回答1: AFAICS here,

java基础(3)--详解String

社会主义新天地 提交于 2019-12-08 15:22:36
java基础(3)--详解String 其实与八大基本数据类型一样,String也是我们日常中使用非常频繁的对象,但知其然更要知其所以然,现在就去阅读源码深入了解一下String类对象,并解决一些我由来已久的疑问。 为什么String是不可变序列 String类使用final修饰的,所以不可以通过继承方式来修改String 。 String类字符串存储是使用final修饰的value数组实现的,所以不可以通过修改value数组来修改String 。但是数组其实也是一个引用,那能不能通过修改引用来达到修改String的目的? 下面来看个例子: public class Test03 { public static void main(String[] args) { char[] arr = new char[]{'a', 'b', 'c', 'd'}; String s = new String(arr); arr[0] = 'b'; System.out.println(s); } } abcd 那为什么不能通过修改引用来修改String呢,看看源码 public String(char value[]) { this.value = Arrays.copyOf(value, value.length); } String通过拷贝数组保证了本身不会被修改

StringTable

本小妞迷上赌 提交于 2019-12-08 13:10:43
首先看这样一个面试题 // StringTable [ "a", "b" ,"ab" ] hashtable 结构,不能扩容 public class Demo1_22 { // 常量池中的信息,都会被加载到运行时常量池中, 这时 a b ab 都是常量池中的符号,还没有变为 java 字符串对象 // ldc #2 会把 a 符号变为 "a" 字符串对象 // ldc #3 会把 b 符号变为 "b" 字符串对象 // ldc #4 会把 ab 符号变为 "ab" 字符串对象 public static void main(String[] args) { String s1 = "a"; // 懒惰的 String s2 = "b"; String s3 = "ab"; String s4 = s1 + s2; // new StringBuilder().append("a").append("b").toString() new String("ab") String s5 = "a" + "b"; // javac 在编译期间的优化,结果已经在编译期确定为ab System.out.println(s3 == s4); // false System.out.println(s3 == s5); // true } } 我们从字节码的角度来分析结果 首先反编译该类代字节码