【问题标题】:How to erase certain characters in a string using a for loop?如何使用 for 循环擦除字符串中的某些字符?
【发布时间】:2017-07-15 04:49:28
【问题描述】:

我正在尝试编写一个带有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; 
}

【问题讨论】:

  • 除了开头的“x” str的结尾不应该被删除,所以当它假设首先删除时假设要删除 end ???

标签: java string methods charat


【解决方案1】:

您不能从字符串中删除字符,因为字符串是不可变的(无法更改)。如果您想了解更多关于此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; 
}

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

【讨论】:

    【解决方案2】:

    我对你的代码做了一些修改:

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

    【讨论】:

    • @ETR009 这个修改会给你想要的结果。
    • 你能测试xxy吗?
    • @Ravi 对于输入 xxy 工作正常,并将 xy 作为输出。
    • 感谢您的意见,它帮助很大。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多