删除字符串中的每 5 个字符和 return 新字符串
Removing every 5th char in a string and return new String
我试图消除字符串中的每第 5 个字符,除非该字符是 space 或点,并且 return 是新字符串。
目前我似乎只能 return 每五次出现一次的字符,但不能操纵它们和 return 新字符串。
例子
原始字符串:"James scored 1 goal. His team won."
新字符串:"Jame scoed 1 goal! His team won!"
我尝试使用带有选择语句的 for 循环,但似乎无法正确操作,然后 return 完整的新字符串。
public class TextProcessorTest{
public static void main(String args[]) {
String sentence = "James scored 1 goal. His team won.";
String newSentence;
StringBuffer buff = new StringBuffer();
int len = sentence.length();
for(int i=4;i<len;i=i+5){
char c = sentence.charAt(i);
System.out.print(c);
if(c == ' '){
buff.append(c);
}else if(c == '.'){
buff.append(c);
}else{
buff.append("");
}
}
newSentence = buff.toString();
System.out.println(newSentence);
}
}
预期结果是:
"Jame scoed 1 goal! His team won!"
实际结果是:
"sr . . "
这很简单。只需忽略每 5 个字符并使用 StringBuilder
:
构建新字符串
public static String remove(String str) {
StringBuilder buf = new StringBuilder(str.length());
for (int i = 1; i <= str.length(); i++)
if (str.charAt(i - 1) == ' ' || str.charAt(i - 1) == '.' || i % 5 != 0)
buf.append(str.charAt(i - 1));
return buf.toString();
}
StringBuilder 与 StringBuffer
StringBuffer
用于并发修改。这是 线程安全的。
StringBuilder
在所有非并发修改中使用。
我试图消除字符串中的每第 5 个字符,除非该字符是 space 或点,并且 return 是新字符串。
目前我似乎只能 return 每五次出现一次的字符,但不能操纵它们和 return 新字符串。
例子 原始字符串:"James scored 1 goal. His team won."
新字符串:"Jame scoed 1 goal! His team won!"
我尝试使用带有选择语句的 for 循环,但似乎无法正确操作,然后 return 完整的新字符串。
public class TextProcessorTest{
public static void main(String args[]) {
String sentence = "James scored 1 goal. His team won.";
String newSentence;
StringBuffer buff = new StringBuffer();
int len = sentence.length();
for(int i=4;i<len;i=i+5){
char c = sentence.charAt(i);
System.out.print(c);
if(c == ' '){
buff.append(c);
}else if(c == '.'){
buff.append(c);
}else{
buff.append("");
}
}
newSentence = buff.toString();
System.out.println(newSentence);
}
}
预期结果是: "Jame scoed 1 goal! His team won!"
实际结果是: "sr . . "
这很简单。只需忽略每 5 个字符并使用 StringBuilder
:
public static String remove(String str) {
StringBuilder buf = new StringBuilder(str.length());
for (int i = 1; i <= str.length(); i++)
if (str.charAt(i - 1) == ' ' || str.charAt(i - 1) == '.' || i % 5 != 0)
buf.append(str.charAt(i - 1));
return buf.toString();
}
StringBuilder 与 StringBuffer
StringBuffer
用于并发修改。这是 线程安全的。StringBuilder
在所有非并发修改中使用。