Java String一次删除一个字母

时间:2018-04-18 20:40:21

标签: java string substring

我试图从一个单词中一次删除一个字母。例如,如果单词是数学,我想尝试:ath,mth,mah 现在我有:

  for (int i = 1; i < word.length() ; i++){
         String removed = word.substring(0, i -1) 
             + word.substring(i -1 , word.length());

  //do something with the word
}

这不起作用,因为我收到错误:java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:-1

感谢您的帮助!

4 个答案:

答案 0 :(得分:1)

以下应该工作:

for (int i = 0; i < word.length(); i++) {
   String removed = word.substring(0, i) + word.substring(i + 1);
}

答案 1 :(得分:0)

for (int i = 1; i < word.length() ; i++){
            String removed = word.substring(0, i - 1) 
                + word.substring(i , word.length());

            System.out.println(removed);
         //do something with the word
        }

实际上,您需要从i而不是i - 1开始获取最后一个单词的第二部分。例如,您可以看到这是必需的并且正在运行word.substring(i , word.length());

虽然没有抛出异常。

答案 2 :(得分:0)

这样的事情应该有效。

public class LetterRemover {
  public static void main(String [] args) {
    String hello = "hello";

    for (int i = 1; i < hello.length(); ++i) {
      if(i == 1) {
        System.out.println(hello.substring(i));
      } else {
        System.out.println(hello.substring(0, i-1) + hello.substring(i));
      }
    }
  }
}

答案 3 :(得分:0)

int wordLength = word.length();
for (int i = 0; i < wordLength; i++) {
    String removed = word.substring(0, i )
            + word.substring(i + 1, wordLength);
    System.out.println(removed);
    //do something with the word
}

你需要每次删除1个字符,所以你应该把它变成两个单词并将它们连接起来。

  1. 第一个单词以无字符(0到0)和第二个单词(1到字长)开头。所以现在你跳过第一个字符。
  2. 您创建第一个单词(0到1)和第二个单词(2到单词长度)。所以现在你跳过第二个char等。