字符串的空格替换(字符串知识)
2017-05-02 14:27
239 查看
题目二:请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
方法一:
补充知识:
StringBuffer和String的区别:StringBuffer对象的内容可以修改;而String对象一旦产生后就不可以被修改,重新赋值其实是两个对象。
StringBuffer对象和String对象之间的互转的代码如下:
String s = “abc”; //String的初始化
StringBuffer sb1 = new StringBuffer(“123”); //StringBuffer的初始化
StringBuffer sb2 = new StringBuffer(s); //String转换为StringBuffer
String s1 = sb1.toString(); //StringBuffer转换为String
StringBuffer常用方法
该方法的作用是追加内容到当前StringBuffer对象的末尾,类似于字符串的连接。调用该方法以后,StringBuffer对象的内容也发生改变,例如:
StringBuffer sb = new StringBuffer(“abc”);
sb.append(def);
则对象sb的值将变成”abcdef”。
使用该方法进行字符串的连接,将比String更加节约内容
该方法的作用是删除指定位置的字符,然后将剩余的内容形成新的字符串。例如:
StringBuffer sb = new StringBuffer(“Test”);
sb. deleteCharAt(1);
该代码的作用删除字符串对象sb中索引值为1的字符,也就是删除第二个字符,剩余的内容组成一个新的字符串。所以对象sb的值变为”Tst”。
还存在一个功能类似的delete方法:
public StringBuffer delete(int start,int end)
该方法的作用是删除指定区间以内的所有字符,包含start,不包含end索引值的区间。例如:
StringBuffer sb = new StringBuffer(“TestString”);
sb. delete (1,4);
该代码的作用是删除索引值1(包括)到索引值4(不包括)之间的所有字符,剩余的字符形成新的字符串。则对象sb的值是”TString”。
该方法的作用是在StringBuffer对象中插入内容,然后形成新的字符串。例如:
StringBuffer sb = new StringBuffer(“TestString”);
sb.insert(4,false);
该示例代码的作用是在对象sb的索引值4的位置插入false值,形成新的字符串,则执行以后对象sb的值是”TestfalseString”。
该方法的作用是将StringBuffer对象中的内容反转,然后形成新的字符串。例如:
StringBuffer sb = new StringBuffer(“abc”);
sb.reverse();
经过反转以后,对象sb中的内容将变为”cba”。
该方法的作用是修改对象中索引值为index位置的字符为新的字符ch。例如:
StringBuffer sb = new StringBuffer(“abc”);
sb.setCharAt(1,’D’);
则对象sb的值将变成”aDc”。
该方法的作用是将StringBuffer对象的中存储空间缩小到和字符串长度一样的长度,减少空间的浪费。
总之,在实际使用时,String和StringBuffer各有优势和不足,可以根据具体的使用环境,选择对应的类型进行使用。
方法一:
public class Solution { public String replaceSpace(StringBuffer str) { String st1 = str.toString(); String st2 = st1.replace(" ","%20"); return st2; } }方法二:初始化一个新的StringBuffer,从前往后append,遇到空格,append(“%20”)
public class Solution { public String replaceSpace(StringBuffer str) { StringBuffer restr = new StringBuffer(); for(int i=0;i<str.toString().length();i++){ char a = str.charAt(i); if(String.valueOf(a).equals(" ")) restr.append("%20"); else restr.append(a); } return restr.toString(); } }方法三:从后往前插入
public class Solution { public String replaceSpace(StringBuffer str) { int spacenum = 0;//spacenum为计算空格数 for(int i=0;i<str.length();i++){ if(str.charAt(i)==' ') spacenum++; } int indexold = str.length()-1; //indexold为替换前的str下标 int newlength = str.length() + spacenum*2;//计算空格转换成%20之后的str长度 int indexnew = newlength-1;//indexold为为把空格替换为%20后的str下标 str.setLength(newlength);//使str的长度扩大到转换成%20之后的长度,防止下标越界 for(;indexold>=0 && indexold<newlength;--indexold){ if(str.charAt(indexold) == ' '){ // str.setCharAt(indexnew--, '0'); str.setCharAt(indexnew--, '2'); str.setCharAt(indexnew--, '%'); }else{ str.setCharAt(indexnew--, str.charAt(indexold)); } } return str.toString(); } }
补充知识:
StringBuffer和String的区别:StringBuffer对象的内容可以修改;而String对象一旦产生后就不可以被修改,重新赋值其实是两个对象。
StringBuffer对象和String对象之间的互转的代码如下:
String s = “abc”; //String的初始化
StringBuffer sb1 = new StringBuffer(“123”); //StringBuffer的初始化
StringBuffer sb2 = new StringBuffer(s); //String转换为StringBuffer
String s1 = sb1.toString(); //StringBuffer转换为String
StringBuffer常用方法
a、append方法
public StringBuffer append(boolean b)该方法的作用是追加内容到当前StringBuffer对象的末尾,类似于字符串的连接。调用该方法以后,StringBuffer对象的内容也发生改变,例如:
StringBuffer sb = new StringBuffer(“abc”);
sb.append(def);
则对象sb的值将变成”abcdef”。
使用该方法进行字符串的连接,将比String更加节约内容
b、deleteCharAt方法
public StringBuffer deleteCharAt(int index)该方法的作用是删除指定位置的字符,然后将剩余的内容形成新的字符串。例如:
StringBuffer sb = new StringBuffer(“Test”);
sb. deleteCharAt(1);
该代码的作用删除字符串对象sb中索引值为1的字符,也就是删除第二个字符,剩余的内容组成一个新的字符串。所以对象sb的值变为”Tst”。
还存在一个功能类似的delete方法:
public StringBuffer delete(int start,int end)
该方法的作用是删除指定区间以内的所有字符,包含start,不包含end索引值的区间。例如:
StringBuffer sb = new StringBuffer(“TestString”);
sb. delete (1,4);
该代码的作用是删除索引值1(包括)到索引值4(不包括)之间的所有字符,剩余的字符形成新的字符串。则对象sb的值是”TString”。
c、insert方法
public StringBuffer insert(int offset, boolean b)该方法的作用是在StringBuffer对象中插入内容,然后形成新的字符串。例如:
StringBuffer sb = new StringBuffer(“TestString”);
sb.insert(4,false);
该示例代码的作用是在对象sb的索引值4的位置插入false值,形成新的字符串,则执行以后对象sb的值是”TestfalseString”。
d、reverse方法
public StringBuffer reverse()该方法的作用是将StringBuffer对象中的内容反转,然后形成新的字符串。例如:
StringBuffer sb = new StringBuffer(“abc”);
sb.reverse();
经过反转以后,对象sb中的内容将变为”cba”。
e、setCharAt方法、charAt(int index)
public void setCharAt(int index, char ch)该方法的作用是修改对象中索引值为index位置的字符为新的字符ch。例如:
StringBuffer sb = new StringBuffer(“abc”);
sb.setCharAt(1,’D’);
则对象sb的值将变成”aDc”。
f、trimToSize方法
public void trimToSize()该方法的作用是将StringBuffer对象的中存储空间缩小到和字符串长度一样的长度,减少空间的浪费。
总之,在实际使用时,String和StringBuffer各有优势和不足,可以根据具体的使用环境,选择对应的类型进行使用。
相关文章推荐
- 替换字符串中连续空格为一个空格的方法(SQL)
- 将字符串中多个空格替换成一个空格
- 替换字符串中的空格
- 字符串替换空格
- 将字符串中的空格用逗号替换
- 截取实际长度字符串,并用空格替换
- 字符串替换空格替换为%20
- Java_字符串的操作替换和删除空格
- 正则表达式将字符串中的所有连续空格替换成一个空格
- 算法练习:将字符串中所有的空格替换为'%20'(只用基本数据结构)
- 如何将字符串中连续的多个空格用一个替换
- 用"%20" 替换字符串中的空格
- ORACLE-字符串替换 去空格
- 请实现一个函数,把字符串中的每个空格替换成“%20”
- 替换字符串中的空格
- 把不是空格的字符串进行替换
- 【Daily】SQL中替换字符串中连续空格为一个空格的方法
- 处理字符串中包括回车符号的情况,替换为空格
- 把一个字符串的空格替换成20%
- 替换空格_把字符串里面的空格替换成%20