如何从string中删除单个字符

为了访问Java中的string的单个字符,我们有String.charAt(2) 。 是否有任何内置函数来删除一个string在java中的个人字符?

像这样的东西:

 if(String.charAt(1) == String.charAt(2){ //I want to remove the individual character at index 2. } 

你也可以使用可变的StringBuilder类。

 StringBuilder sb = new StringBuilder(inputString); 

它有deleteCharAt()方法以及许多其他的方法。

只要删除你需要删除的字符,然后得到如下结果:

 String resultString = sb.toString(); 

这避免了创build不必要的string对象。

一种可能性:

 String result = str.substring(0, index) + str.substring(index+1); 

请注意,结果是一个新的String(以及两个中间String对象),因为Java中的Strings是不可变的。

您可以使用名为replace的Java String方法,它将用第二个参数replace与第一个参数匹配的所有字符:

 String a = "Cool"; a = a.replace("o",""); //variable 'a' contains the string "Cl" 

不,因为Java中的string是不可改变的。 你必须创build一个新的string,删除你不想要的字符。

为了replacestringstr中索引位置idx处的单个字符c ,请执行下面的操作,并记住将会创build一个新的string:

 String newstr = str.substring(0, idx) + str.substring(idx + 1); 
 String str = "M1y java8 Progr5am"; 

deleteCharAt()

 StringBuilder bulid = new StringBuilder(str); bulid.deleteCharAt(1); // Shift the positions front. bulid.deleteCharAt(8-1); bulid.deleteCharAt(15-2); System.out.println("Builder : "+bulid); 

更换()

 StringBuffer buffer = new StringBuffer(str); buffer.replace(1, 2, ""); // Shift the positions front. buffer.replace(7, 8, ""); buffer.replace(13, 14, ""); System.out.println("Buffer : "+buffer); 

炭[]

 char[] c = str.toCharArray(); String new_Str = ""; for (int i = 0; i < c.length; i++) { if (!(i == 1 || i == 8 || i == 15)) new_Str += c[i]; } System.out.println("Char Array : "+new_Str); 

考虑下面的代码:

 public String removeChar(String str, Integer n) { String front = str.substring(0, n); String back = str.substring(n+1, str.length()); return front + back; } 

你也可以使用(巨大的)正则expression式机器。

 inputString = inputString.replaceFirst("(?s)(.{2}).(.*)", "$1$2"); 
  • "(?s)" -告诉正则expression式像普通字符一样处理换行符(以防万一)。
  • "(.{2})" -组$ 1正好收集2个字符
  • "." - "." -索引2处的任何字符(被挤出)。
  • "(.*)" -组$ 2收集inputString的其余部分。
  • "$1$2" -将组1和组2组合在一起。

使用String类的replaceFirst函数。 replace函数的变体有很多,您可以使用。

如果您需要对字符移除进行一些逻辑控制,请使用此操作

 String string = "sdsdsd"; char[] arr = string.toCharArray(); // Run loop or whatever you need String ss = new String(arr); 

如果你不需要任何这样的控制,你可以使用奥斯卡或Bhesh提到的。 他们在现场。

通过使用replace方法,我们可以改变string的单个字符。

 string= string.replace("*", ""); 

从string中删除字符最简单的方法

 String str="welcome"; str=str.replaceFirst(String.valueOf(str.charAt(2)),"");//'l' will replace with "" System.out.println(str);//output: wecome 
 public static String removechar(String fromString, Character character) { int indexOf = fromString.indexOf(character); if(indexOf==-1) return fromString; String front = fromString.substring(0, indexOf); String back = fromString.substring(indexOf+1, fromString.length()); return front+back; } 
 public class RemoveCharFromString { public static void main(String[] args) { String output = remove("Hello", 'l'); System.out.println(output); } private static String remove(String input, char c) { if (input == null || input.length() <= 1) return input; char[] inputArray = input.toCharArray(); char[] outputArray = new char[inputArray.length]; int outputArrayIndex = 0; for (int i = 0; i < inputArray.length; i++) { char p = inputArray[i]; if (p != c) { outputArray[outputArrayIndex] = p; outputArrayIndex++; } } return new String(outputArray, 0, outputArrayIndex); } } 
  BufferedReader input=new BufferedReader(new InputStreamReader(System.in)); String line1=input.readLine(); String line2=input.readLine(); char[] a=line2.toCharArray(); char[] b=line1.toCharArray(); loop: for(int t=0;t<a.length;t++) { char a1=a[t]; for(int t1=0;t1<b.length;t1++) { char b1=b[t1]; if(a1==b1) { StringBuilder sb = new StringBuilder(line1); sb.deleteCharAt(t1); line1=sb.toString(); b=line1.toCharArray(); list.add(a1); continue loop; } } 

*可以使用StringBuilder和deletecharAt删除string值。

 String s1 = "aabc"; StringBuilder sb = new StringBuilder(s1); for(int i=0;i<sb.length();i++) { char temp = sb.charAt(0); if(sb.indexOf(temp+"")!=1) { sb.deleteCharAt(sb.indexOf(temp+"")); } } 

例如,如果要计算string中有多less个a,可以这样做:

 if (string.contains("a")) { numberOf_a++; string = string.replaceFirst("a", ""); } 

在大多数情况下,使用StringBuildersubstring是一个很好的方法(正如已经回答的那样)。 但是,对于性能严重的代码,这可能是一个很好的select。

 /** * Delete a single character from index position 'start' from the 'target' String. * * ```` * deleteAt("ABC", 0) -> "BC" * deleteAt("ABC", 1) -> "B" * deleteAt("ABC", 2) -> "C" * ```` */ public static String deleteAt(final String target, final int start) { return deleteAt(target, start, start + 1); } /** * Delete the characters from index position 'start' to 'end' from the 'target' String. * * ```` * deleteAt("ABC", 0, 1) -> "BC" * deleteAt("ABC", 0, 2) -> "C" * deleteAt("ABC", 1, 3) -> "A" * ```` */ public static String deleteAt(final String target, final int start, int end) { final int targetLen = target.length(); if (start < 0) { throw new IllegalArgumentException("start=" + start); } if (end > targetLen || end < start) { throw new IllegalArgumentException("end=" + end); } if (start == 0) { return end == targetLen ? "" : target.substring(end); } else if (end == targetLen) { return target.substring(0, start); } final char[] buffer = new char[targetLen - end + start]; target.getChars(0, start, buffer, 0); target.getChars(end, targetLen, buffer, start); return new String(buffer); }