如何使用for循环擦除字符串中的某些字符?

时间:2017-07-15 04:49:29

标签: java string methods charat

我正在尝试编写一个带String参数str的函数。它返回一个新版本,其中删除了所有“x”字符。除非str的开头或结尾处的“x”不应被删除。我只能使用循环来解决此问题,而不是StringBuilder.replace()方法。

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

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; 
}

2 个答案:

答案 0 :(得分:0)

您无法从String中删除字符,因为String是不可变的(无法更改)。如果您想更多地了解这个check the documentation out here并阅读介绍性信息。

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

您可以做的是将输入转换为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; 
}

这需要更改您拥有的代码,同时仍然提供所需的结果。

答案 1 :(得分:-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);
    }    
}