在Java中通过索引删除字符

时间:2018-03-30 11:30:07

标签: java string

我正在尝试通过字符串中的索引删除字符。这是我的来源:

 private String removeByIndex(String str, int index) {
    return str.replaceFirst(String.valueOf(str.charAt(index)), "");
}

我的输入字符串例如是1.05。我的目标是通过移除点后的第一个元素来接收1.5

我这样调用了这个函数

removeByIndex("1.05",Stringlength-2)

但结果为1

我如何解决这个问题?

4 个答案:

答案 0 :(得分:7)

尝试这个点之后的任何数字将仅用点替换

private String removeByIndex(String str, int index) {
    return str.replaceFirst("\\.[\\d]", ".");
}

答案 1 :(得分:2)

如果您知道索引,则应使用String.substring(int start, int end)来减少输入。这可以折叠成StringBuilder.append(String s, int start, int end)

private static String removeByIndex(String str, int index) {
  StringBuilder sb = new StringBuilder();
  if (index > 0) {
    sb.append(str, 0, index);
  }
  if (index < str.length() - 1) {
    sb.append(str, index + 1, str.length());
  }
  return sb.toString();
}

pascalpuetz指出:

private static String removeByIndex(String str, int index) {
    return new StringBuilder(str).deleteCharAt(index).toString();
}

答案 2 :(得分:1)

你的代码工作正常。

public class hr1{
 private static String removeByIndex(String str, int index) {
        return str.replaceFirst(String.valueOf(str.charAt(index)), "");
}
public static void main(String[] args) {
    String s="1.05";
    int inde=0;
    for(int i=0;i<s.length();i++){
        if(s.charAt(i)=='.')
            break;
        inde++;
    }
    String res=removeByIndex(s,inde+1);
    System.out.println(res);
}
}

答案 3 :(得分:0)

你的方法有效。只需要找到点的位置。

class Playground {
    public static void main(String[ ] args) {
        String str = "1.05";
        int dotPos = str.indexOf(".");


        String res = Playground.removeByIndex(str, dotPos + 1);

        System.out.println(res);

    }

    private static String removeByIndex(String str, int index) {
        return str.replaceFirst(String.valueOf(str.charAt(index)), "");
    }
}

你也可以使用StringBuilder:

class Playground {
    public static void main(String[ ] args) {
        String str = "1.0505";
        int dotPos = str.indexOf(".");


        String res = Playground.removeByIndex(str, dotPos + 1);

        System.out.println(res);

    }

    private static String removeByIndex(String str, int index) {
        return new StringBuilder(str).deleteCharAt(index).toString();
    }
}

Edit1 :添加另一个适用于任何位置和任何角色的示例