2017-07-15 175 views
-1

我想写一个函数,需要一个String参数str。它会返回一个新版本,其中所有“x”字符已被删除。除了str的开头或结尾处的“x”不应被删除。我只能针对此问题使用循环,而不是StringBuilder.replace()方法。如何使用for循环擦除字符串中的某些字符?

我不知道如何擦除某个字符串位置的字符。到目前为止,这是我的代码,任何输入将不胜感激。

public String stringX(String str) 
{ 
    String result = str; 
    int len = str.length() - 1; 


    for (int i = 0; i <= len; i++) 
    { 
     char letter = str.charAt(i); 
     if (letter == 'x' && ((i != 0) && (i != len))) 
     { 

     } 
    } 

    return result; 
} 
+0

*除了str的最开始**或**结尾处的“x”不应该被删除*,所以当它假设首先删除并且它假设删除结束时? – Ravi

回答

-1

我已经做了一些修改,在你的代码:

String result = ""; 
int len = str.length() - 1; 

for (int i = 0; i <= len; i++) 
{ 
    char letter = str.charAt(i); 
    if (letter == 'x' && ((i == 0) || (i == len))) { 
     result += String.valueOf(letter); 
    }   
    else if(letter != 'x'){ 
     result += String.valueOf(letter); 
    }  
} 
+0

@ ETR009此修改将会给你想要的结果。 –

+0

你可以测试'xxy'吗? – Ravi

+0

@Ravi其工作正常,输入xxy并给出xy作为输出。 –

0

因为字符串是不可变的不能从一个字符串中删除字符(不能更改)。如果你想多阅读一下这个check the documentation out here并阅读这些介绍性信息。

基本上,这意味着您需要创建一个新的字符串,其中包含您需要的所有字符。

你可以做的是把你的输入变成char[],并循环你当前的for循环。当你发现一个不是x的字符时,你可以将它附加到一个空字符串输出。

public String stringX(String str) 
    { 
    char[] c = str.toCharArray(); 
    String result = ""; 
    int len = str.length() - 1; 

    for (int i = 0; i <= len; i++) 
    { 
    char letter = c[i]; 
    if (!(letter == 'x' && ((i != 0) && (i != len)))) 
    { 
     result += letter; 
    } 
    } 

    return result; 
} 

这将需要更改很少的代码,同时仍提供所需的结果。

+0

谢谢你,你的代码帮了我很多。 – ETR009