stringbuilder删除指定字符(stringbuilder删除第一个字符)
JAVA中Stringbuilder类的方法是什么?
如果程序对附加字符串的需求很频繁,不建议使用+来进行字符串的串联,而应该使用java.lang.StringBuilder类,从而使效率大大提高。1、append 就是将信息追加到当前 StringBuilder 的结尾,例如:StringBuilder sb=new StringBuilder("abc");sb.append("123");System.out.println(sb);//输出abc1232、Insert 就是将字符串或对象插入到当前 StringBuilder 对象的指定索引处,例如:StringBuilder sb=new StringBuilder("abc");sb.insert(2, "123");\x0d\x0aSystem.out.println(sb);//输出ab123c3、delete 就是删除指定开始索引到结束索引处的字符,作用等同于remove方法,例如:StringBuilder sb=new StringBuilder("abc");sb.delete(0, 1);//删除从索引0到1的字符\x0d\x0aSystem.out.println(sb);//输出bc4、replace 就是替换指定索引处的指定字符,例如:StringBuilder sb=new StringBuilder("abc");sb.replace('b', 'B');\x0d\x0aSystem.out.println(sb);//输出aBc另外,你说的toString是每个继承于Object对象的类都有的方法,作用是将对象转换为显示的字符串,SringBuilder重写了这个方法,返回StringBuilder对象的字符串内容。在使用System.out.println()输出对象时,如果不显示调用toString方法,该方法会被自动调用。
C#基础string和StringBuilder
string 和 StringBuilder 的区别: tring 不可变, StringBuilder 是可变的
当 StringBuilder 字符大小达到限制就会去申请新的内存区域,大小是原来的2倍
1、利用构造函数创造StringBuilder
System.Text.StringBuilder sb = new System.Text.StringBuilder("HelloWord");
2、初始化一个空的StringBuilder,大小为20
StringBuilder sb = new StringBuilder(20);
3、初始化了一个对象,初始化的对象是HelloWord,这个对象有20字符大小
StringBuilder sb =new StringBuilder("HelloWord",20);
StringBuilder 追加字符串
4、当我们需要对一个字符串进行频繁的删除和添加,使用StringBuilder的效率会高于string
sb.Append("HaoShuai");
sb.Insert(0, "http://");
字符串
1、字符串的不可变性:当你重新给一个字符串赋值之后,老值并无销毁,会重新开辟一块新的内存储存。
当程序结束后,GC扫描整个内存,如果发现有的空间没有被指向,则立即把它销毁
2、我们可以将字符串看做是char类型的一个只读数组
ToCharArray(); 将字符串转换成Char数组
new string(char[] chs) :能够将char数组转换成字符串
字符串提供的各种方法
1、 Length 获取字符串的长度个数。
2、 ToUpper(); 将字符串转换成大写形式
3、 ToLower(); 将字符串转换成小写形式
4、 Equals(比较的字符串,StringComparison。OrdinalIgnoreCase); 比较两个字符串,忽略大小写
5、 Split(); 分割字符串,返回字符串数组
CompareTo : 比较字符串 返回值int -1,0,1
//CompareTo:字符串比较
string s = "jiangxinbin";
//当两个字符串相等的时候,返回0 如果当比较 j 时,就在字母表靠前返回1,靠后返回-1
int res = s.CompareTo("jiangxinbin");
Replace :把指定字符替换指定自定义字符 不影响原字符 字符换字符 字符串换字符串
string newSTr= s.Replace('.', '-');
string newSTr= s.Replace(“.”,“----”);
Split: 在出现给定字符的地方,把字符串拆分成一个字符串数组
string[] strArray = s.Split('.');
Substring : 截取指定字符串位置后面的长度的字符串
string str = s.Substring(6);
ToLower : 把字符串转换成小写形式
ToUpper: 把字符串转换成大写形式
Trim: 删除收尾的空白
Concat: 合并字符串
CopyTo: 把字符串中指定的字符复制到一个数组中
Format: 格式化字符串
indexOf 取得字符串第一次出现某个给定字符串或者字符的位置
ndexOfAny
insert: 把一个字符串实例插入到另一个字符串实例的制定索引处
Join: 合并字符串数组,创建一个新的字符串
string 是 System.String 的别名
// string 和 StringBuilder 的区别: string 不可变, StringBuilder 是可变的
// 当 StringBuilder 字符大小达到限制就会去申请新的内存区域,大小是原来的2倍
// 1、利用构造函数创造 StringBuilder
//System.Text.StringBuilder sb = new System.Text.StringBuilder("JiangXinBIn");
// 2、初始化一个空的 StringBuilder ,大小为20
//StringBuilder sb = new StringBuilder(20);
// 3、初始化了一个对象,初始化的对象是JiangXinBin,这个对象有20字符大小
StringBuilder sb =new StringBuilder("JaingXinBin",20);
StringBuilder:
Append() 方法,给当前字符串追加字符
insert() 追加特定格式的字符串
Remove() 从当前字符串中删除字符
Replace() 在当前字符串中,用某个字符或者字符串全部替换另一个字符或字符串
ToSting() 吧当前的 StringBuilder 中存储的字符串,提取成一个不可变得字符串
C#——string与StringBuilder
本来说好的,有socket的记录的,但是基础知识还没整理完,所以就先不写,等基础知识梳理完毕再进行记录。
那么今天就先记录一下关于string字符串类,还有就是StringBuilder类,它们俩的区别的联系。
OK,那么我们开始进入正题。
首先,我来记录一下,关于string类型的一些琐碎知识:
这个时候输出的就是True和False了。
暂时就想到了那么多,然后呢关于正则表达式,待会也会记录一下。
下面记录一下关于string类型的一些属性方法。
字符串是String类型的对象,它的值是文本。在内部,文本被存储为Char对象的顺序只读集合。C# 字符串末尾没有以 null 结尾的字符;因此 C# 字符串可以包含任意数目的嵌入式 null 字符(“\0”)。字符串的Length属性代表了其所包含的Char字符的数量,而不是Unicode字符数量。
若要访问字符串中的各个 Unicode 码位,请使用 StringInfo 对象。
关于string类型的构造函数:
也就是说,我们可以使用new运算创建string对象,
比如:char[] array = {'a','b','c'};string a = new string(array);
但是,注意,除了在使用字符数组初始化字符串时以外,不要使用 new 运算符创建字符串对象。
下面记录,一些关于string类型的静态方法,这里只记录一部分,像是什么重载之类的方法就不一一介绍了。
关于字符串比较:
当然,它还有一些方法重载,这里就不记录了。
比较两个字符串,如果strA“小于”strB 那么返回-1,如果strA“等于”strB 那么返回0,如果strA“大于”strB 那么返回1。
如果 true 的值与 a 的值相同,则为 b;否则为 false。 如果 a 和 b 均为 null,此方法将返回 true。
关于字符串连接:
返回一个字符串,是方法参数按照顺序连接在一起。
连接指定的string数组的元素,注意关键字 params 表示参数数组没有固定的大小。
关于字符串Copy:
创建一个与指定的 System.String 具有相同值的 System.String 的新实例。
关于检索:
检索系统对指定 System.String 的引用。如果暂存了 str,则返回系统对其的引用;否则返回对值为 str 的字符串的新引用。
关于判断null:
指示指定的字符串是 null 还是 System.String.Empty 字符串。如何是空字符串或者null,那么返回true,否则返回false。
关于插入字符:
关于格式化:
将指定字符串中的一个或多个格式项替换为指定对象的字符串表示形式。
静态方法就是那么多,然后就是一些实例方法了。
返回对此string实例的引用。
与strB进行比较,如果小于0,则比strB小,如果等于0,则与strB相等,如果大于0,则比strB大。
如果value包含在该实例字符串中,则返回true,否则返回false。
将指定数目的字符从此实例中的指定位置复制到 Unicode 字符数组中的指定位置。
第一个参数: 要复制的此实例中第一个字符的索引。
第二个参数:此实例中的字符所复制到的 Unicode 字符数组。
第三个参数: destination 中的索引,在此处开始复制操作。
第四个参数:此实例中要复制到 destination 的字符数。
报告指定字符串在此实例中的第一个匹配项的从零开始的索引。 搜索从指定字符位置开始,并检查指定数量的字符位置。如果找到该字符串,则为从当前实例的起始位置开始的从零开始的 value 的索引位置;否则为 -1。 如果 value 为 System.String.Empty,则返回值为startIndex。
将value插入到指定的位置index。
返回当前实例中从指定位置到最后位置的所有以删除的字符的新字符串。
返回指定数量字符在当前这个实例起始点在已删除的指定的位置的新字符串。
返回一个新字符串,其中此实例中出现的所有指定 Unicode 字符都替换为另一个指定的 Unicode 字符。
返回一个新字符串,其中当前实例中出现的所有指定字符串都替换为另一个指定的字符串。######public String[] Split(char[] separator, int count);
基于数组中的字符将一个字符串拆分成最大数量的子字符串。 也可指定要返回的子字符串的最大数量。注意返回的是数组。
从此实例检索子字符串。 子字符串在指定的字符位置开始并一直到该字符串的末尾。
从此实例检索子字符串。 子字符串从指定的字符位置开始且具有指定的长度。
返回此字符串转换为小写形式的副本。
返回此字符串转换为大写形式的副本。
比较常用和重要的就是这些了。
下面讲一下关于StringBuilder的知识点。
首先,StringBuilder的功能其实和string类型很像,可是为什么会有两个功能相近的东西出现呢?这不是很脑残的事件么?
还记得string的最重要的一个特性吧,那就是不变性!!!
由于string类型的不变性,如果我们反复修改字符串,那么就可能会造成性能上的损失,这个时候,我们可是使用StringBuilder类型。
StringBuilder类型是一个可变字符串类,可变性意味着,一旦创建类的实例后,可以修改通过追加、 删除、 替换或插入字符。
一个 StringBuilder 对象会维护一个缓冲区来容纳扩展到字符串。
如果没有可用空间,将新数据追加到缓冲区否则为系统会分配新的、 更大的缓冲区、 从原始缓冲区的数据复制到新的缓冲区和新的数据则追加到新的缓冲区。
比如,我们在创建一个StringBuilder类型的实例的时候给它20大小的空间,如果20不够,那么它就会自动的增加到40,也就是2倍,但是不会创建新的实例,也就没有了频繁GC,所以性能损耗就会减少。
但是,StringBuilder并非万能的,当遇到如下情况的时候,可以使用string类型:
当你遇到如下情况时,可以考虑使用StringBuilder:
OK,下面就在记录一些关于StringBuilder类型的属性和方法:
传送门:
向实例追加指定的字符串。
向此实例追加指定子字符串的副本。
向此实例追加通过处理复合格式字符串(包含零个或更多格式项)而返回的字符串。 每个格式项都替换为一个参数的字符串表示形式。
将后面跟有默认行终止符的指定字符串的副本追加到当前 System.Text.StringBuilder 对象的末尾。
将默认的行终止符追加到当前 System.Text.StringBuilder 对象的末尾。
从当前 System.Text.StringBuilder 实例中移除所有字符。
将此实例的指定段中的字符复制到目标 System.Char 数组的指定段中。
将指定字符串的一个或更多副本插入到此实例中的指定字符位置。
将字符串插入到此实例中的指定字符位置。
将指定范围的字符从此实例中移除。
OK,最后再给一个StringBuilder的例子,就此完结。
C# 如何去掉string中所有转义字符(特殊符号)?
1、去掉字符串中的转义等特殊字符:
stringinputString=@”helloworld]\“;
StringBuildersb=newStringBuilder();
string[]parts=inputString.Split(newchar[]{’‘,‘\n’,‘\t’,‘\r’,‘\f’,‘\v’,’\’},StringSplitOptions.RemoveEmptyEntries);
intsize=parts.Length;
for(inti=0;isize;i++);
sb.AppendFormat(“{0}“,parts[i]);
2、删除字符串头尾的转义等特殊字符串:
使用SubString和Remove来操作
比如去掉结尾的转义字符,可以使用
inputString.SubString(0,inputString.Length-1);
inputString.SubString(0,inputString.Length-2);
inputString.SubString(0,inputString.Length-3);
扩展资料
C#字符串取消转义字符的转义作用,使其正常显示
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Windows.Forms;
namespacetest1
{
publicpartialclassForm2:Form
{
publicForm2()
{
InitializeComponent();
}
privatevoidbutton1_Click(objectsender,EventArgse)
{
stringstr=@"D:\document\test.txt";
stringstr1="D:\\document\\test.txt";
MessageBox.Show(str+"---"+str1);
}
}
}
java的StringBuilder如何去掉最后一个字符?
StringBuilder s=new StringBuilder();
s.append("zhidao");
s.deleteCharAt(s.length()-1);
System.err.println(s);
说明:java.lang.StringBuffer.deleteCharAt() 在这个序列中的指定位置删除字符。此序列是由一个char缩短
Java的二个字符串处理方法
以下是测试程序运行结果
source = a b c d e f g h i j k l m n o p q r s t u v w x y z
字符串中删除字符的方法
系统函数计算 次用时 ms
自定义方法计算 次用时 ms
生成 abcdefghijklmnopqrstuvwxyz
字符串按字符分割的方法
系统函数计算 次用时 ms
自定义方法计算 次用时 ms
生成 [Ljava lang String;@ : [a b c d e f g h i j k l m n o p q r s t u v w x y z]
能够数倍超越爪哇(Java)类库(Java 和Java )中相关方法的性能 究其原因 是因为类库为通用性 提供的相关方法 都采取了正则表达式参数 虽然编译过的正则表达式很高效 但毕竟无法和字符相等这种单拍操作相提并论
下面把程序发出来 供大家指出错误 讨论以及参考
首先是删除字符串中某字符的方法
/**
* b字符串删除其中某字符/bbr/
* 本方法用来移除指定字符串中的指定字符
* 在 Java 以内 删除字符串中的指定字符 需要通过
* {@link String#replace(CharSequence CharSequence) replace} 方法 将指定单
* 字符的字符串 替换成空字符串来实现 而 codereplace/code 方法为了追求通用
* 使用了正则表达式参数 即便是编译过的正则表达式 其性能也无法与简单的字符相等
* 判断相提并论 br/
* 本方法不涉及正则表达式 通过遍历原字符串对应的字符数组来寻找符合待删除字符的
* 字符 然后通过 {@link StringBuilder} 来追加其余字符 这是一个简单但高效的方法
* br/
* 本方法编写之初 曾试图通过 codeStringBuilder/code 的功能来直接删除字符串
* 中待删除字符 后经 网站用户 shenyuc 提示 并经过考证 发现
* {@link StringBuilder#deleteCharAt(int) deleteCharAt} 方法并不高效 应该是
* 因为其内部每次删除都进行了数组迁移 遂改为追加方式 效率提高了 倍多 br/
* 本方法使用示例如下
* pre
* String source = a b c d e f g h i j k l m n o p q r s t u v w x y z ;
* String removed = StringTool removeChar(source );/pre
* 此示例中 {@link String} source 为原字符串 String removed 为删除空格后的
* 结果
* @see???? String#replace(CharSequence CharSequence)
* @see???? StringBuilder#append(char)
* @param?? source? 待被处理的字符串 即本方法的 原字符串
* @param?? target? 需要从原字符串中移除的字符
* @return????? 从指定原字符串中移除指定字符后所得的结果字符串
* @exception?? NullPointerException??? 当传入参数 source 为空时
*/
static public String removeChar(String source char target)
{
??? StringBuilder builder = new StringBuilder();
??? for (char c: source toCharArray())
??????? if (c != target) builder append(c);
??? return builder toString();
}
接下来 是字符串分割的方法
/**
* b简易字符串分割/bbr/
* 本方法用来根据指定字符 将某字符串以此为分割 拆分成多个子字符串
* 对于分割字符串功能 在 Java 以内 都只提供了支持正则表达式的
* {@link String#split(String) split} 方法 此方法为追求通用 即便是简单的
* 分割 也会基于正则表达式来进行 即便是编译过的正则表达式 其性能也无法与简单
* 的字符相等判断相提并论 br/
* 本方法不涉及正则表达式 通过遍历原字符串对应的字符数组来寻找符合分割字符的
* 字符 然后通过 {@link String#substring(int int)} 来获取每一个分割字符之间
* 的子字符串 存入一个 {@link LinkedList} 中 这是一个功能简单但高效的方法
* 如果规模比较大 拟考虑先通过一次循环 取得原字符串中分割字符的数量 以此制作
* 定长的 {@link ArrayList}
* 本方法尤其适用于常见的由半角逗号结合在一起的字符串的分割 br/
* 在编写之初 本方法曾采取将字符串的字符数组分段处理 通过系统字符串复制来形成
* 一个个子字符串 后经考证 {@link String#substring(int int)} 是一个很高效的
* 方法 遂改 效率提高了一倍
* 本方法使用示例如下
* pre
* String source = a b c d e f g h i j k l m n o p q r s t u v w x y z ;
* ListString secs = StringTool splitSimpleString(source );/pre
* 此示例中 {@link String} source 为原字符串 {@link List} secs 为删除空格后
* 的结果
* @see???? String#split(String)
* @see???? String#substring(int int)
* @param?? source? 待被处理的字符串 即本方法的 原字符串
* @param?? gap???? 分割字符
* @return????? 从指定原字符按分割字符拆分成的子字符串列表
* @exception?? NullPointerException??? 当传入参数 source 为空时
*/
static public ListString splitSimpleString(String source char gap)
{
??? ListString result = new LinkedListString();
??? char[] sourceChars = source toCharArray();
??? String section = null;
??? int startIndex = ;
??? for (int index = ; ++index != sourceChars length; )
??? {
??????? if (sourceChars[index] != gap) continue;
??????? section = source substring(startIndex index);
??????? result add(section);
??????? startIndex = index + ;
??? }
??? section = source substring(startIndex sourceChars length);
??? result add(section);
??? return result;
}
最后是测试程序
static public void main(String[] arguments)
{
??? // 准备测试内容
??? String source = a b c d e f g h i j k l m n o p q r s t u v w x y z ;
??? System out println( source = + source);
??? int loop = ;
??? String resultString = null;
??? ListString resultList = null;
??? String[] resultArr = null;
??? int index = ;
??? long start = Calendar getInstance() getTimeInMillis();
??? System out println( 字符串中删除字符的方法 );
??? // 测试 Java 类库提供的字符串删除某字符
??? index = ;
??? while (++index != loop)
??????? resultString = source replace( );
??? long end = Calendar getInstance() getTimeInMillis();
??? System out println( 系统函数计算 + loop + 次用时 + (end start) + ms );
??? // 测试自定义的字符串删除某字符
??? index = ;
??? while (++index != loop)
??????? resultString = StringTool removeChar(source );
??? long end = Calendar getInstance() getTimeInMillis();
??? System out println( 自定义方法计算 + loop + 次用时 + (end end ) + ms );
??? System out println( 生成 + resultString + );
??? System out println( \n );
??? // 测试 Java 类库提供的字符串按某字符分割
??? System out println( 字符串按字符分割的方法 );
??? index = ;
??? while (++index != loop) resultArr = source split( );
??? long end = Calendar getInstance() getTimeInMillis();
??? System out println( 系统函数计算 + loop + 次用时 + (end end ) + ms );
??? // 测试自定义的字符串按某字符分割
??? index = ;
??? while (++index != loop)
??????? resultList = StringTool splitSimpleString(source );
??? long end = Calendar getInstance() getTimeInMillis();
??? System out println( 自定义方法计算 + loop + 次用时 + (end end ) + ms );
??? System out println( 生成 + resultArr + : + resultList + );
??? System out println( \n );
lishixinzhi/Article/program/Java/hx/201311/27117