Как удалить одиночный символ из строки
Для доступа к отдельным символам String в Java мы имеем String.charAt(2)
. Есть ли встроенная функция для удаления отдельного символа строки в java?
Что-то вроде этого:
if(String.charAt(1) == String.charAt(2){
//I want to remove the individual character at index 2.
}
Ответы
Ответ 1
Вы также можете использовать класс StringBuilder
, который изменен.
StringBuilder sb = new StringBuilder(inputString);
Он имеет метод deleteCharAt()
, наряду со многими другими методами мутаторов.
Просто удалите символы, которые нужно удалить, а затем получите результат следующим образом:
String resultString = sb.toString();
Это позволяет избежать создания ненужных строковых объектов.
Ответ 2
Одна возможность:
String result = str.substring(0, index) + str.substring(index+1);
Обратите внимание, что результатом является новый String (а также два промежуточных объекта String), потому что строки в Java неизменяемы.
Ответ 3
Вы можете использовать метод Java String с именем replace, который заменит все символы, соответствующие первому параметру, вторым параметром:
String a = "Cool";
a = a.replace("o","");
Ответ 4
Нет, потому что строки в Java неизменяемы. Вам нужно будет создать новую строку, удалив символ, который вам не нужен.
Для замены единственного char c
в позиции индекса idx
в строке str
выполните что-то вроде этого и помните, что будет создана новая строка:
String newstr = str.substring(0, idx) + str.substring(idx + 1);
Ответ 5
String str = "M1y java8 Progr5am";
deleteCharAt()
StringBuilder build = new StringBuilder(str);
System.out.println("Pre Builder : " + build);
build.deleteCharAt(1); // Shift the positions front.
build.deleteCharAt(8-1);
build.deleteCharAt(15-2);
System.out.println("Post Builder : " + build);
заменить()
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);
Ответ 6
Рассмотрим следующий код:
public String removeChar(String str, Integer n) {
String front = str.substring(0, n);
String back = str.substring(n+1, str.length());
return front + back;
}
Ответ 7
Вы также можете использовать (огромную) систему регулярных выражений.
inputString = inputString.replaceFirst("(?s)(.{2}).(.*)", "$1$2");
-
"(?s)" -
указывает regexp обрабатывать символы новой строки, как обычные символы (на всякий случай).
-
"(.{2})" -
группа $1, собирающая ровно 2 символа
-
"." -
любой символ в индексе 2 (для выдавливания).
-
"(.*)" -
группа $2, которая собирает остальную часть входной строки.
-
"$1$2" -
помещая группу $1 и группу $2 вместе.
Ответ 8
Чтобы изменить Strings, прочитайте о StringBuilder, потому что он изменчив, за исключением неизменяемой String. Различные операции можно найти здесь https://docs.oracle.com/javase/tutorial/java/data/buffers.html. Приведенный ниже фрагмент кода создает StringBuilder, а затем добавляет указанную строку, а затем удаляет первый символ из строки и затем преобразует его обратно из StringBuilder в строку.
StringBuilder sb = new StringBuilder();
sb.append(str);
sb.deleteCharAt(0);
str = sb.toString();
Ответ 9
Используйте функцию replaceFirst класса String. Существует так много вариантов функции замены, которые вы можете использовать.
Ответ 10
Если вам нужен логический контроль над удалением символов, используйте этот
String string = "sdsdsd";
char[] arr = string.toCharArray();
// Run loop or whatever you need
String ss = new String(arr);
Если вам не нужен такой контроль, вы можете использовать то, что упоминал Оскар или Бэш. Они находятся на месте.
Ответ 11
С помощью метода replace мы можем изменить одиночный символ строки.
string= string.replace("*", "");
Ответ 12
Самый простой способ удалить char из строки
String str="welcome";
str=str.replaceFirst(String.valueOf(str.charAt(2)),"");//'l' will replace with ""
System.out.println(str);//output: wecome
Ответ 13
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);
}
}
Ответ 14
В большинстве случаев использования StringBuilder
или substring
- хороший подход (как уже было сказано). Однако для критического кода производительности это может быть хорошей альтернативой.
/**
* 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);
}
Ответ 15
Да. У нас есть встроенная функция для удаления отдельного символа строки в Java, то есть deleteCharAt.
Например,
public class StringBuilderExample
{
public static void main(String[] args)
{
StringBuilder sb = new StringBuilder("helloworld");
System.out.println("Before : " + sb);
sb = sb.deleteCharAt(3);
System.out.println("After : " + sb);
}
}
Выход
Before : helloworld
After : heloworld
Ответ 16
Если вы хотите удалить символ из строки String по указанному индексу int:
public static String removeCharAt(String str, int index) {
// The part of the String before the index:
String str1 = str.substring(0,index);
// The part of the String after the index:
String str2 = str.substring(index+1,str.length());
// These two parts together gives the String without the specified index
return str1+str2;
}
Ответ 17
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;
}
Ответ 18
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;
}
}
Ответ 19
* Вы можете удалить строковое значение, используя StringBuilder и deletecharAt.
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+""));
}
}
Ответ 20
Когда у меня возникают подобные вопросы, я всегда спрашиваю: "Что бы сделали гуру Java?" :)
И я бы ответил на это, в этом случае, посмотрев реализацию String.trim()
.
Здесь экстраполяция этой реализации, которая позволяет использовать больше символов обрезки.
Тем не менее, обратите внимание, что оригинальная обрезка фактически удаляет все символы, которые являются <= ' '
, поэтому вам, возможно, придется объединить это с оригиналом, чтобы получить желаемый результат.
String trim(String string, String toTrim) {
// input checks removed
if (toTrim.length() == 0)
return string;
final char[] trimChars = toTrim.toCharArray();
Arrays.sort(trimChars);
int start = 0;
int end = string.length();
while (start < end &&
Arrays.binarySearch(trimChars, string.charAt(start)) >= 0)
start++;
while (start < end &&
Arrays.binarySearch(trimChars, string.charAt(end - 1)) >= 0)
end--;
return string.substring(start, end);
}
Ответ 21
public String missingChar(String str, int n) {
String front = str.substring(0, n);
// Start this substring at n+1 to omit the char.
// Can also be shortened to just str.substring(n+1)
// which goes through the end of the string.
String back = str.substring(n+1, str.length());
return front + back;
}
Ответ 22
Чтобы удалить один символ из данной строки, пожалуйста, найдите мой метод, надеюсь, он будет полезен. я использовал str.replaceAll для удаления строки, но есть много способов удалить символ из данной строки, но я предпочитаю метод replaceall.
Код для удаления символа:
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
public class Removecharacter
{
public static void main(String[] args)
{
String result = removeChar("Java", 'a');
String result1 = removeChar("Edition", 'i');
System.out.println(result + " " + result1);
}
public static String removeChar(String str, char c) {
if (str == null)
{
return null;
}
else
{
return str.replaceAll(Character.toString(c), "");
}
}
}
Консольное изображение:
пожалуйста, найдите Прикрепленное изображение консоли,
![enter image description here]()
Спасибо за вопрос. :)
Ответ 23
Например, если вы хотите рассчитать, сколько а существует в String, вы можете сделать это следующим образом:
if (string.contains("a"))
{
numberOf_a++;
string = string.replaceFirst("a", "");
}