我需要编写一个名为remove()
的方法,该方法接受两个参数,String
和char
,并返回一个新的String,用于从输入字符串中删除所有出现的char 。我必须在不使用replace()
方法的情况下执行此操作。到目前为止,我有:
public class Remover
{
public static void main (String[] args)
{
String sampleString = "this is some text";
char sampleChar = 's';
System.out.print(remove(sampleString, sampleChar));
}
public static String remove(String a, char b)
{
String newString = "";
newString = a.substring(0, a.indexOf(b))+""+a.substring(a.indexOf(b)+1);
return newString;
}
}
主要方法仅用于测试目的,示例字符串和char只是示例;我需要这个方法来处理任何字符串和char。但无论哪种方式,我都确定我所拥有的是错的,我完全迷失了如何继续前进。对于这种情况,我正在尝试让我的代码返回
"thi i ome text"
答案 0 :(得分:2)
char
方法从字符串中获取string.toCharArray()
数组。char
数组。如果char
不等于您的目标char
StringBuilder
类进行追加:构建字符串。答案 1 :(得分:1)
您可以使用charAt()
String s = "this is some text";
public static String remove(String a, char b) {
String word = "";
for (int i = 0; i < a.length(); i++){
if (s.charAt(i) != b){
word += a.charAt(i);
}
}
return word;
}
字符串连接的替代方法是在循环中使用StringBuilder
StringBuilder sb = new StringBuilder();
for (int i = 0; i < a.length(); i++){
if (s.charAt(i) != b){
sb.append(s.charAt(i));
}
}
return sb.toString();
另一种解决方法是将String转换为char数组并遍历数组
StringBuilder sb = new StringBuilder;
for (char c : s.toCharArray()){
if (c != b) {
sb.append(c);
}
}
return word;
答案 2 :(得分:0)
我不会建议替代解决方案,我会告诉您如何解决当前代码中的问题。
您的程序仅适用于s
的第一次出现。您应该执行以下操作:
" "
拆分字符串。remove
方法。" "
。应该有类似的东西:
String sampleString = "this is some text";
String[] arr = sampleString.split(" ");
char sampleChar = 's';
for(String str : arr) {
System.out.print(remove(str, sampleChar) + " ");
}
请注意,在remove
方法中,您应检查字符串是否包含s
,如果不包含,请按原样返回:
public static String remove(String a, char b) {
if(!a.contains(b)) {
return a;
}
String newString = "";
newString = a.substring(0, a.indexOf(b))+""+a.substring(a.indexOf(b)+1);
return newString;
}
这应该有用。
答案 3 :(得分:0)
您可以使用如下的递归。但仍然使用StringBuilder,这是更好的方法。这只是为了使你的代码工作
public static String remove(String a, char b)
{
String newString = "";
newString = a.substring(0, a.indexOf(b))+""+a.substring(a.indexOf(b)+1);
if(newString.indexOf(b)!=-1) {
newString= remove(newString,b);
}
return newString;
}
答案 4 :(得分:0)
您可以使用a.toCharArray())
,
然后编写一个for循环来逐个比较char数组中的char元素和预期删除的char。
如果不相等,则将其附加到StringBuilder对象。
试试这个;
public static String remove(String a, char b) {
/*String newString = "";
newString = a.substring(0, a.indexOf(b)) + ""
+ a.substring(a.indexOf(b) + 1);
return newString;*/
StringBuilder sb = new StringBuilder();
for(char c: a.toCharArray())
{
if(c!= b)
{
sb.append(c);
}
}
return sb.toString();
}
答案 5 :(得分:0)
public class charReplace{
public static void main(String args[]){
String sampleString = "This is some text";
char sampleChar = 's';
System.out.println(char_remove(sampleString, sampleChar));
}
public static String char_remove(String a, char b){
String newString = " ";
int len = a.length();
for(int i =0; i<len ;i++)
{
char c = a.charAt(i);
if(c == b)
newString = newString + " ";
else
newString = newString + c ;
}
return newString;
}
}
答案 6 :(得分:0)
public static String remove(String a, char b)
{
StringBuilder sbul =new StringBuilder();
int i;
for(i=0;i<a.length();i++){
char c = a.charAt(i);
if(c==b)
continue;
sbul.append(c);
}
return sbul.toString();
}