2013-02-01 31 views
-1

我在以下步骤中试过。但是我不知道下一步该怎么做。只能用s.equals(""),s.charAt(0),s.substring(1)。其他的方法是不允许的。我该如何编写一个函数字符串replace(char a,char b,string s)来替换字符串s中每个出现的字符a b

public string remove1 (char c, string s){ 
string to_ret = ""; 
while(true){ 
    if (s.equals("")) return to_ret; 
    char c2 = s.charAt(0); 
    if (c2 = c) return to_ret+s.substring(1) 
    to_ret = to _ret; 
    s = s.substring(1); 
} 

remove("e","hello") 

接下来我该做什么?

+0

你可以使用内置的替换功能。或者你必须自己写? –

+1

你试过了什么?你的代码附加到这个问题上,是完全不相关的,不工作。 – user902383

回答

1

如果我理解你的问题,你可以做到这一点像以下:

s = s.replace('a', 'b'); 
+1

除了问题只说明equals(),可以使用charAt()和substring()。这似乎很明显,这是一个家庭作业问题。 –

+0

从标题看来,OP似乎不是**寻找内置的replace()。 –

+0

替换方法不允许 – user2030982

1
public String remove(char a, char b, String s) { 
    String retString = ""; 
    for (int i = 0; i < s.length(); i++) { 
     char stringChar = s.charAt(i); 
     if (stringChar == a) { 
      retString = retString + b; 
     } else { 
      retString = retString + stringChar; 
     } 
    } 
    return retString; 
} 
+0

我们的导师让我做这个没有s.length。只是我提到的那3种方法。 – user2030982

0

这是一门功课的问题吗?

public String remove1 (char c,char b, String s){ 
String to_ret = ""; 
int len = s.length(); 
for(int i =0 ; i< len ; i++){ 
    if (s.equals("")) return to_ret; 
    char c2 = s.charAt(i); 
    if (c2 == c) 
     to_ret = to_ret + b; 
    else 
     to_ret = to_ret + c2; 

} 
return to_ret; 
} 
0

这似乎有人试图教你Java中的函数式编程原则。我会质疑这种语言的选择。即便如此,你应该考虑递归解决方案。字符串作为字符列表。

1

让我给你介绍一个递归:

public String replace(char a, char b, String s) { 
    if (s.equals("") return ""; 
    char ch = s.charAt(i); 
    if (stringChar == a) { 
     return b+ replace(a,b,s.substring(1)) 
    } else { 
     return ch+ replace(a,b,s.substring(1)) 
    } 
} 
相关问题