Перейти к содержимому

Как удалить строку c

  • автор:

String. Remove Метод

Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.

Возвращает новую строку, в которой удалено указанное число знаков текущей строки.

Перегрузки

Возвращает новую строку, в которой были удалены все символы, начиная с указанной позиции и до конца в текущем экземпляре.

Возвращает новую строку, в которой было удалено указанное число символов в указанной позиции.

Remove(Int32)

Возвращает новую строку, в которой были удалены все символы, начиная с указанной позиции и до конца в текущем экземпляре.

public: System::String ^ Remove(int startIndex);
public string Remove (int startIndex);
member this.Remove : int -> string
Public Function Remove (startIndex As Integer) As String
Параметры

startIndex Int32

Отсчитываемая от нуля позиция, с которой начинается удаление знаков.

Возвращаемое значение

Новая строка, эквивалентная данной строке за минусом удаленных знаков.

Исключения

Значение параметра startIndex меньше нуля.

startIndex указывает положение, которое находится за пределами этой строки.

Примеры

В следующем примере демонстрируется Remove метод. Следующий к последнему варианту удаляет весь текст, начиная с указанного индекса до конца строки. В последнем случае удаляются три символа, начиная с указанного индекса.

// This example demonstrates the String.Remove() method. using namespace System; int main() < String^ s = "abc---def"; // Console::WriteLine( "Index: 012345678" ); Console::WriteLine( "1) ", s ); Console::WriteLine( "2) ", s->Remove( 3 ) ); Console::WriteLine( "3) ", s->Remove( 3, 3 ) ); > /* This example produces the following results: Index: 012345678 1) abc---def 2) abc 3) abcdef */ 
// This example demonstrates the String.Remove() method. using System; class Sample < public static void Main() < string s = "abc---def"; Console.WriteLine("Index: 012345678"); Console.WriteLine("1) ", s); Console.WriteLine("2) ", s.Remove(3)); Console.WriteLine("3) ", s.Remove(3, 3)); > > /* This example produces the following results: Index: 012345678 1) abc---def 2) abc 3) abcdef */ 
// This example demonstrates the String.Remove() method. let s = "abc---def" printfn "Index: 012345678" printfn $"1) " printfn $"2) " printfn $"3) " (* This example produces the following results: Index: 012345678 1) abc---def 2) abc 3) abcdef *) 
' This example demonstrates the String.Remove() method. Class Sample Public Shared Sub Main() Dim s As String = "abc---def" ' Console.WriteLine("Index: 012345678") Console.WriteLine("1) ", s) Console.WriteLine("2) ", s.Remove(3)) Console.WriteLine("3) ", s.Remove(3, 3)) End Sub End Class ' 'This example produces the following results: ' 'Index: 012345678 '1) abc---def '2) abc '3) abcdef ' 

Комментарии

В платформа .NET Framework строки отсчитываются от нуля. Значение параметра может быть в диапазоне startIndex от нуля до одного меньше длины экземпляра строки.

Этот метод не изменяет значение текущего экземпляра. Вместо этого он возвращает новую строку, в которой были удалены все символы от позиции startIndex до конца исходной строки.

См. также раздел

  • Int32
  • Concat(Object)
  • Insert(Int32, String)
  • Join(String, String[])
  • Replace(Char, Char)
  • Split(Char[])
  • Substring(Int32)
  • Trim(Char[])

Применяется к

Remove(Int32, Int32)

Возвращает новую строку, в которой было удалено указанное число символов в указанной позиции.

public: System::String ^ Remove(int startIndex, int count);
public string Remove (int startIndex, int count);
member this.Remove : int * int -> string
Public Function Remove (startIndex As Integer, count As Integer) As String
Параметры

startIndex Int32

Отсчитываемая от нуля позиция, с которой начинается удаление знаков.

Число символов для удаления.

Возвращаемое значение

Новая строка, эквивалентная данному экземпляру за минусом удаленных знаков.

Исключения

Значение параметра startIndex или count меньше нуля.

startIndex плюс count указывает позицию за пределами этого экземпляра.

Примеры

В следующем примере показано, как удалить второе имя из полного имени.

using namespace System; int main() < String^ name = "Michelle Violet Banks"; Console::WriteLine( "The entire name is ''", name ); // remove the middle name, identified by finding the spaces in the middle of the name->->. int foundS1 = name->IndexOf( " " ); int foundS2 = name->IndexOf( " ", foundS1 + 1 ); if ( foundS1 != foundS2 && foundS1 >= 0 ) < name = name->Remove( foundS1 + 1, foundS2 - foundS1 ); Console::WriteLine( "After removing the middle name, we are left with ''", name ); > > // The example displays the following output: // The entire name is 'Michelle Violet Banks' // After removing the middle name, we are left with 'Michelle Banks' 
using System; public class RemoveTest < public static void Main() < string name = "Michelle Violet Banks"; Console.WriteLine("The entire name is ''", name); // Remove the middle name, identified by finding the spaces in the name. int foundS1 = name.IndexOf(" "); int foundS2 = name.IndexOf(" ", foundS1 + 1); if (foundS1 != foundS2 && foundS1 >= 0) < name = name.Remove(foundS1 + 1, foundS2 - foundS1); Console.WriteLine("After removing the middle name, we are left with ''", name); > > > // The example displays the following output: // The entire name is 'Michelle Violet Banks' // After removing the middle name, we are left with 'Michelle Banks' 
let name = "Michelle Violet Banks" printfn $"The entire name is ''" // Remove the middle name, identified by finding the spaces in the name. let foundS1 = name.IndexOf " " let foundS2 = name.IndexOf(" ", foundS1 + 1) if foundS1 <> foundS2 && foundS1 >= 0 then let name = name.Remove(foundS1 + 1, foundS2 - foundS1) printfn $"After removing the middle name, we are left with ''" // The example displays the following output: // The entire name is 'Michelle Violet Banks' // After removing the middle name, we are left with 'Michelle Banks' 
Public Class RemoveTest Public Shared Sub Main() Dim name As String = "Michelle Violet Banks" Console.WriteLine("The entire name is ''", name) Dim foundS1 As Integer = name.IndexOf(" ") Dim foundS2 As Integer = name.IndexOf(" ", foundS1 + 1) If foundS1 <> foundS2 And foundS1 >= 0 Then ' remove the middle name, identified by finding the spaces in the middle of the name. name = name.Remove(foundS1 + 1, foundS2 - foundS1) Console.WriteLine("After removing the middle name, we are left with ''", name) End If End Sub End Class ' The example displays the following output: ' The entire name is 'Michelle Violet Banks' ' After removing the middle name, we are left with 'Michelle Banks' 

Комментарии

В платформа .NET Framework строки отсчитываются от нуля. Значение параметра может быть в диапазоне startIndex от нуля до одного меньше длины экземпляра строки.

Этот метод не изменяет значение текущего экземпляра. Вместо этого он возвращает новую строку, в которой было удалено количество символов, указанное параметром count . Символы удаляются в позиции, указанной параметром startIndex .

См. также раздел

  • Int32
  • Concat(Object)
  • Insert(Int32, String)
  • Join(String, String[])
  • Replace(Char, Char)
  • Split(Char[])
  • Substring(Int32)
  • Trim(Char[])

Обрезка и удаление символов из строк в .NET

Если вы анализируете предложение на отдельные слова, вы можете получить слова с пустыми пробелами (также называемыми пробелами) на обоих концах слова. В этом случае можно использовать один из методов обрезки в System.String классе , чтобы удалить любое количество пробелов или других символов из указанной позиции в строке. В следующей таблице описаны доступные методы обрезки.

Имя метода Использовать
String.Trim Удаление пробелов или знаков, указанных в массиве знаков, из начала и конца строки.
String.TrimEnd Удаление символов, указанных в массиве символов, в конце строки.
String.TrimStart Удаление символов, указанных в массиве символов, в начале строки.
String.Remove Удаление указанного количества символов в указанной позиции индекса в строке.

Trim

Вы можете легко удалить пробелы с обоих концов строки с помощью String.Trim метода , как показано в следующем примере:

String^ MyString = " Big "; Console::WriteLine("HelloWorld!", MyString); String^ TrimString = MyString->Trim(); Console::WriteLine("HelloWorld!", TrimString); // The example displays the following output: // Hello Big World! // HelloBigWorld! 
string MyString = " Big "; Console.WriteLine("HelloWorld!", MyString); string TrimString = MyString.Trim(); Console.WriteLine("HelloWorld!", TrimString); // The example displays the following output: // Hello Big World! // HelloBigWorld! 
Dim MyString As String = " Big " Console.WriteLine("HelloWorld!", MyString) Dim TrimString As String = MyString.Trim() Console.WriteLine("HelloWorld!", TrimString) ' The example displays the following output: ' Hello Big World! ' HelloBigWorld! 

Кроме того, можно удалить символы, указанные в массиве знаков, из начала и конца строки. В следующем примере удаляются пробелы, точки и звездочки:

using System; public class Example < public static void Main() < String header = "* A Short String. *"; Console.WriteLine(header); Console.WriteLine(header.Trim( new Char[] < ' ', '*', '.' >)); > > // The example displays the following output: // * A Short String. * // A Short String 
Module Example Public Sub Main() Dim header As String = "* A Short String. *" Console.WriteLine(header) Console.WriteLine(header.Trim()) End Sub End Module ' The example displays the following output: ' * A Short String. * ' A Short String 

TrimEnd

Метод String.TrimEnd удаляет символы из конца строки, создавая новый строковый объект. Для указания символов, которые следует удалять, в этот метод передается массив символов. Порядок элементов в массиве символов не влияет на операцию обрезки. В случае обнаружения символа, который отсутствует в массиве, операция останавливается.

В следующем примере удаляются последние буквы строки с помощью TrimEnd метода . В этом примере положение символа ‘r’ и символа ‘W’ повернуты обратно, чтобы проиллюстрировать, что порядок символов в массиве не имеет значения. Обратите внимание, что этот код удаляет последнее слово MyString и часть первого.

String^ MyString = "Hello World!"; array^ MyChar = ; String^ NewString = MyString->TrimEnd(MyChar); Console::WriteLine(NewString); 
string MyString = "Hello World!"; char[] MyChar = ; string NewString = MyString.TrimEnd(MyChar); Console.WriteLine(NewString); 
Dim MyString As String = "Hello World!" Dim MyChar() As Char = Dim NewString As String = MyString.TrimEnd(MyChar) Console.WriteLine(NewString) 

Этот код выводит на консоль значение He .

В следующем примере удаляется последнее слово строки с помощью TrimEnd метода . В этом коде запятая следует за словом Hello . Так как запятая не указана в массиве символов для обрезки, обрезка заканчивается запятой.

String^ MyString = "Hello, World!"; array^ MyChar = ; String^ NewString = MyString->TrimEnd(MyChar); Console::WriteLine(NewString); 
string MyString = "Hello, World!"; char[] MyChar = ; string NewString = MyString.TrimEnd(MyChar); Console.WriteLine(NewString); 
Dim MyString As String = "Hello, World!" Dim MyChar() As Char = Dim NewString As String = MyString.TrimEnd(MyChar) Console.WriteLine(NewString) 

Этот код выводит на консоль значение Hello, .

TrimStart

Метод String.TrimStart аналогичен методу , String.TrimEnd за исключением того, что он создает новую строку путем удаления символов из начала существующего строкового объекта. Массив символов передается методу TrimStart для указания удаляемых символов. Как и в случае с методом TrimEnd , порядок элементов в массиве символов не влияет на операцию обрезки. В случае обнаружения символа, который отсутствует в массиве, операция останавливается.

В следующем примере удаляется первое слово в строке. В этом примере положение символа ‘l’ и символа ‘H’ повернуты обратно, чтобы проиллюстрировать, что порядок символов в массиве не имеет значения.

String^ MyString = "Hello World!"; array^ MyChar = ; String^ NewString = MyString->TrimStart(MyChar); Console::WriteLine(NewString); 
string MyString = "Hello World!"; char[] MyChar = ; string NewString = MyString.TrimStart(MyChar); Console.WriteLine(NewString); 
Dim MyString As String = "Hello World!" Dim MyChar() As Char = Dim NewString As String = MyString.TrimStart(MyChar) Console.WriteLine(NewString) 

Этот код выводит на консоль значение World! .

Удалить

Метод String.Remove удаляет указанное количество знаков, начиная с указанного места в существующей строке. Этот метод подразумевает, что отсчет индекса начинается с нуля.

В следующем примере удаляется 10 символов из строки, начинающейся с пятой позиции отсчитываемого от нуля индекса строки.

String^ MyString = "Hello Beautiful World!"; Console::WriteLine(MyString->Remove(5,10)); // The example displays the following output: // Hello World! 
string MyString = "Hello Beautiful World!"; Console.WriteLine(MyString.Remove(5,10)); // The example displays the following output: // Hello World! 
Dim MyString As String = "Hello Beautiful World!" Console.WriteLine(MyString.Remove(5, 10)) ' The example displays the following output: ' Hello World! 

Замените

Чтобы удалить из строки указанный символ или подстроку, можно вызвать метод String.Replace(String, String) и указать пустую строку (String.Empty) в качестве замены. В следующем примере удаляются все запятые из строки:

using System; public class Example < public static void Main() < String phrase = "a cold, dark night"; Console.WriteLine("Before: ", phrase); phrase = phrase.Replace(",", ""); Console.WriteLine("After: ", phrase); > > // The example displays the following output: // Before: a cold, dark night // After: a cold dark night 
Module Example Public Sub Main() Dim phrase As String = "a cold, dark night" Console.WriteLine("Before: ", phrase) phrase = phrase.Replace(",", "") Console.WriteLine("After: ", phrase) End Sub End Module ' The example displays the following output: ' Before: a cold, dark night ' After: a cold dark night 

См. также

Совместная работа с нами на GitHub

Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.

Как удалить строку c

Пользователь

Регистрация: 01.04.2014

Сообщений: 10

Удалить строку по её номеру

У меня есть файл, в нём несколько строк. Мне нужно удалить определённую строку из файла функцией вида flnrem(file, strnum), но без создания новых файлов с перемещением на место старых. Как это сделать?

serega6531
Посмотреть профиль
Найти ещё сообщения от serega6531

Белик Виталий 🙂

Регистрация: 23.07.2007

Сообщений: 57,792

Считать в память все что после этой строки, а потом переписать став на место строки с помошью fseek() к примеру. Ну и не забыть усечь файл (не знаю функцию в Си для этого)

I’m learning to live.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удалить строку evgeniy8705 Паскаль, Turbo Pascal, PascalABC.NET 3 14.04.2014 15:22
Ввести строку символов. Найти комбинацию из двух букв по всей строке, удалить их и сдвигать строку на пустые места AdelinaMango Общие вопросы C/C++ 9 02.04.2014 08:24
По зашифрованной строке и номеру позиции в отсортированном списке циклических сдигов восстановить исходную строку lipniskaya Помощь студентам 3 22.03.2013 10:05
Двунаправленный линейный список строк. Вставить строку, удалить строку и заменить строку tarasman11 Паскаль, Turbo Pascal, PascalABC.NET 4 05.07.2012 20:27
VBA_макрос: удалить всю строку в таблице, если в ней есть слово «удалить» макарошка Microsoft Office Excel 15 05.10.2010 09:09

Developing.ru

Подскажите плиз как я могу удалить строку из файла. Рыл справочники и ниче не нашел. Причем желательно курсор оставить в начале строки, для дальнейшей записи (на место удаленной строки) новой строки.

Kolinus Сообщения: 449 Зарегистрирован: 23 авг 2004, 14:02 Откуда: Минск

Читаешь файл в память.
удаляешь нужную строку.
пишешь файл на диск.

Одной командой на сколько я в курсе такое сделать нереально

В SAD — все в SAD.
SergeyM Сообщения: 18 Зарегистрирован: 14 янв 2005, 08:44

Это все конечно так, но как удалить строку?
Функции я ненашел, как заполнить строку пустыми символами я незнаю. Пробовал как в Делфи использовать » си ругается.
Народ, литературы у меня не так много, в Делфе я бы это решил за несколько минут, но Си п п не Делфи, а нужно в С++.
Помогите плиз, заранее благодарен.

Kolinus Сообщения: 449 Зарегистрирован: 23 авг 2004, 14:02 Откуда: Минск

MAXLENGTH — максимально возможная длина — определишь сам
char buf[MAXLENGTH];
FILE *ff=fopen(«filename»,»r»);
std::list lst;

if(ff!=NULL) while(!feof(ff)) fgets(buf,MAXLENGTH,ff);
//можно здесь смотреть и не добавлять то что надо.
lst.push_back(buf);
>
fclose(ff);
std::list::iterator it;
char *tb;
for(it=lst.begin();it!=lst.end();it++) tb=(char*)(*it);
if(strcmp(tb,str_to_delete)==0)
lst.erase(it);
>
>

Вроде так — сам на си давно не писал, могут сразу возникнуть ошибки.
Проверить щас тоже не на чем

В SAD — все в SAD.
SergeyM Сообщения: 18 Зарегистрирован: 14 янв 2005, 08:44

А как нибудь проще с использованием или с коментариями, чтобы я хоть знал где что и где рыть глубже для большего понимания.
А то я ниче ненашел к примеру про std::list lst. Я так понял что это гдето stream, где-то в этих библиотеках.

Hup Сообщения: 207 Зарегистрирован: 05 мар 2004, 05:31 Откуда: Владивосток Контактная информация:
Я на C# подобное делал.
Если нужно, то могу поискать примерчик по подобной тематике =)
Усложнять — легко, упрощать — сложно
WinMain Сообщения: 913 Зарегистрирован: 14 янв 2005, 10:30 Откуда: Москва Контактная информация:

В качестве динамического контейнера для строк нужно использовать не std::list, а std::list или std::vector.
Кроме них существуют и другие готовые контейнеры для строк, которые реализованы в тех или иных библиотеках. Ты к сожалению не указал в какой среде программирования собираешься это сделать.
Если в C++ Builder, то там есть класс TStringList, в котором есть готовый метод LoadFromFile(). В MFC для VC++ есть классы CStringArray и CStringList.
Читать текст построчно из файла можно функцией fgets() или методом ifstream::getline(). Или используй аналогичные классы из соответствующих библиотек своей среды разработки, типа CFile и CArchive из MFC.

Kolinus Сообщения: 449 Зарегистрирован: 23 авг 2004, 14:02 Откуда: Минск

Если в C++ Builder, то там есть класс TStringList, в котором есть готовый метод LoadFromFile(). В MFC для VC++ есть классы CStringArray и CStringList.

именно потому я и постарался выразиться средствами STL

SergeyM либо укажи платформу либо поищи документацию по STL

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *