我正在尝试通过字符串中的索引删除字符。这是我的来源:
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
。
我如何解决这个问题?
答案 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 :添加另一个适用于任何位置和任何角色的示例