String类扩展功能实现
重复某个字符串
题:重复某个字符串,如:'a' 5=>"aaaaa"就是将字符’a’重复5次,'a' -1=>"" 就是将字符’a’重复-1次则返回 “”。看代码:
其中 : c =>被重复的字符;
count=>重复的数目,如果count<=0则返回"".
本题要注意的一点就是返回时要把数组转字符串返回。
public static String repeat(char c, int count) {
if(count <= 0){
return "";
}else{
char[] arr = new char[count];
for(int i = 0; i < count; i++){
arr[i] = c;
}
//字符串与字符数组的转换
return new String(arr);
}
}
填充字符串(填充于原有字符串之前)
题:将已有字符串填充为规定长度,如果已有字符串超过这个长度则返回这个字符串,字符填充于字符串之前。如:"abc" 'A' 5=>"AAabc"就是在字符串"abc"之前填充’A’,使得填充之后字符串长度为5。看代码:
其中:str=>被填充的字符串;
filledChar=>填充的字符;
len=>填充长度
本题需要注意的就是数组形式比较繁琐,但是也能够实现,注意其范围还有数组下标,以及循环,不是嵌套的循环;字符串形式时也要注意返回类型,求字符串长度时注意是方法,所以是str.length()必须加括号。
//数组形式
public static String fillBefore(String str, char filledChar, int len) {
if(str.length() >= len){
return str;
}else{
int size = len-str.length();
char[] arr1 = new char[len];
int i = 0;
for(i = 0; i < size; i++){
arr1[i] = filledChar;
}
char[] strr = str.toCharArray();
for(; i < len; ++i){
arr1[i] = strr[i-size];
}
return new String(arr1);
}
}
//字符串形式
public static String fillBefore(String str, char filledChar, int len) {
if(str.length() >= len){
return str;
}else{
char[] arr1 = new char[len-str.length()];
for(int i = 0; i < len-str.length(); i++){
arr1[i] = filledChar;
}
String str2 = new String(arr1);
return str2 + str;
}
}
填充字符串(填充于原有字符串之后)
与上题类似,不同之处在于把要填充的字符放在原有字符串之后,这里就不再赘述。直接看代码:
//数组形式
public static String fillAfter(String str, char filledChar, int len) {
if(str.length() >= len){
return str;
}else{
char[] strr = str.toCharArray();
int size = len-str.length();
char[] arr1 = new char[len];
int i = 0;
for(i=0; i < str.length(); ++i){
arr1[i] = strr[i];
}
for(; i < len; i++){
arr1[i] = filledChar;
}
return new String(arr1);
}
}
//字符串形式
public static String fillAfter(String str, char filledChar, int len) {
if(str.length() >= len){
return str;
}else{
char[] arr1 = new char[len-str.length()];
for(int i = 0; i < len-str.length(); i++){
arr1[i] = filledChar;
}
String str2 = new String(arr1);
return str + str2;
}
}
移除字符串中所有给定的字符串
题:移除字符串中所有给定的字符串。如:removeAll("aa-bb-cc-dd","-")=>aabbccdd 就是将字符串"aa-bb-cc-dd"中所有的"-"全部移除。看代码:
其中:str=>字符串;
strToRemove=>被移除的字符串;
本题需要注意的就是返回值类型的问题。
public static String removeAll(CharSequence str, CharSequence strToRemove) {
String str3 = new String(str.toString());
if(str.length() == 0){
return "";
}else{
//public boolean contains(CharSequence s)判断一个字串是否存在
while(str3.contains(strToRemove)){
//若存在,则将要替换的字符串的内容全部变为""
return str3.replaceAll(strToRemove.toString(),"");
}
return str3;
}
}
反转字符串
题:反转字符串。如abcd=>dcba.看代码:
其中:str=>被反转的字符串;
本题需要注意的就是循环次数,一定是除2。
public static String reverse(String str) {
if(str == null){
return null;
}else if(str.length() == 0){
return "";
}else{
char[] arr4 = str.toCharArray();
for(int i = 0; i < str.length()/2; i++){
char tmp = arr4[i];
arr4[i] = arr4[str.length()-i-1];
arr4[str.length()-i-1] = tmp;
}
return new String(arr4);
}
}
测试代码
public class Strings{
public static void main(String[] args){
//repeat
System.out.println("*************repeat************");
char c = '5';
int count = 10;
System.out.println("重复字符"+ "'" + c + "'" + count + "次后的结果为:");
System.out.println(repeat(c,count));
System.out.println();
//fillBefore
System.out.println("**********fillBefore***********");
String str1 = "abcde";
char filledChar = 'A';
int len = 10;
//int len = 5;
//int len = 1;
System.out.println("填充之前字符串为:" + str1 + " ,填充字符'" + filledChar + "'使得字符串长度为:" + len + " ,填充之后字符串为:" + fillBefore(str1,filledChar,len));
System.out.println();
//fillAfter
System.out.println("**********fillAfter************");
String str11 = "abcde";
char filledCharr = 'A';
int leng = 10;
//int leng = 5;
//int leng = 1;
System.out.println("填充之前字符串为:" + str11 + " ,填充字符'" + filledCharr + "'使得字符串长度为:" + leng + " ,填充之后字符串为:" + fillAfter(str11,filledCharr,leng));
System.out.println();
//removeAll
System.out.println("**********removeAll************");
String str3 = "12-hu-90-ji";
String strRemove = "-";
System.out.println("删除之前字符串为:" + str3 + " ,删除字符:'" + strRemove +" '删除之后字符串为:" + removeAll(str3,strRemove));
System.out.println();
//reverse
System.out.println("************reverse************");
//String str4 = null;
//String str4 = "12abcdefg67";
String str4 = "6754390";
System.out.println("反转之前字符串为:" + str4 + " 反转之后字符串为:" + reverse(str4));
System.out.println();
}
}
结果

2703

被折叠的 条评论
为什么被折叠?



