Извлеките Все Символы после последнего вхождения шаблона C#

VS Code (Windows, macOS, Linux) - Свободный и С открытым исходным кодом с хорошим GUI. Отредактированный файл JSON на 3,6 ГБ, загруженный за минуту. У Вас должно быть достаточно RAM для загрузки файлов.

Свободные средства просмотра только для чтения:

  • glogg (Windows, macOS, Linux) †“Подтвержденный для обработки файлов мульти-ГБ. Его основной функцией является поиск регулярного выражения. Имеет вкладки, файлы чтений непосредственно от диска, может наблюдать/следовать файлы и позволяет пользователю отмечать строки.
  • (Windows) †LogExpert “"Замена GUI для tail". Файл поддержек после, поиск, фильтрация, настраиваемое выделение, плагины и внешние инструменты.
  • Средство просмотра Файла Крупного текста (Windows) †“минималист и имеет очень небольшой исполняемый размер. Представление разделения поддержек, текстовая настройка темы, regex поиск и файл после.
  • (Windows) †Lister “, Еще более маленький и минималистский. Это - один исполняемый файл, едва 500 КБ, но это все еще поддерживает поиск (с regexes), печать, режим Hex-редактора и настройки.

Свободные редакторы:

  • Vim и Emacs (Windows, macOS, Linux) †“Классические редакторы Unix. Крутая кривая обучения, но жестоко эффективный. У них есть настройки, которые могут быть настроены для создания их еще быстрее.
  • Большой Редактор файлов (Windows) †“Открывает и редактирует ТБ + файлы, поддерживает Unicode, использует мало памяти, имеет XML-определенные функции и включает режим двоичного счета.
  • (Windows) †HxD “Hex-редактор, не текстовый редактор; но это удивительно быстро и полезно.
  • (Windows) †GigaEdit “Поддерживает поиск, символьную статистику и настройку шрифта. Но это - багги †“с большими файлами, это только позволяет перезаписывать символы, не вставляя их; это не уважает LF как разделитель строки, только CRLF; и это медленно.

Встроенные программы (никакая требуемая установка):

  • меньше (macOS, Linux) †“традиционный инструмент пейджера командной строки Unix. Позволяет Вам просмотреть текстовые файлы практически любого размера. Может быть установлен в Windows, также.
  • Блокнот (Windows) †“, Достойный с большими файлами, особенно с выключенным переходом на новую строку.
  • [еще 1158] (Windows) †“Это обращается к Windows MORE, не Unix more. Консольная программа, которая позволяет Вам просматривать файл, один экран за один раз.

веб-средства просмотра:

  • htmlpen.com †“Может открыться и ТБ выделения синтаксиса + файлы. Позволяет редактировать, за исключением очень больших файлов. Поиск поддержек, regexes, и экспорт.
  • readfileonline.com †“Другое большое средство просмотра файла HTML5. Поиск поддержек.

Заплаченные редакторы:

  • 010 Редакторов (Windows, macOS, Linux) †“Открывают гиганта (целых 50 ГБ) файлы.
  • SlickEdit (Windows, macOS, Linux) †“Открывает большие файлы.
  • UltraEdit (Windows, macOS, Linux) †“Открывает файлы больше чем 6 ГБ, но конфигурация должна быть изменена для этого, чтобы быть практичной: Меню В» Усовершенствованный В» Конфигурация В» Файл, Обрабатывающий В» Временные Файлы В» Открытый файл без временного файла...
  • (Windows) †EmEditor “Обрабатывает файлы очень крупного текста приятно (официально до 248 ГБ, но целых 900 ГБ согласно одному отчету).

И наконец, Вы попытались открыть большой файл со своим постоянным редактором? Некоторые редакторы могут на самом деле обработать довольно большие файлы. В частности, Блокнот ++ (Windows) и Сублимированный текст (Windows, macOS, Linux) файлы поддержки в диапазоне на 2 ГБ.

5
задан Alan Moore 21 July 2009 в 01:38
поделиться

6 ответов

Вы можете разделить строку на компоненты, проанализировать последнюю, чтобы увеличить ее, и снова собрать их вместе:

string[] parts = version.Split('.');
parts[3] = (Int32.Parse(parts[3]) + 1).ToString();
version = String.Join(".", parts);

Другой способ, который может быть немного более эффективным - получить только последний компонент, использующий строковые операции:

int pos = version.LastIndexOf('.') + 1;
int num = Int32.Parse(version.Substring(pos));
version = version.Substring(0, pos) + num.ToString();
6
ответ дан 13 December 2019 в 05:40
поделиться
public string DoMagic(string s)
{
    string t = s.Substring(s.LastIndexOf(' ')+1);
    return t.Substring(0, t.Length-1) + (int.Parse(t[t.Length-1].ToString())+1).ToString();
}
2
ответ дан 13 December 2019 в 05:40
поделиться

Предполагая что изменяется только последний элемент в подстроках:

List<string> items = GetItems();
string[] max = input.Split(' ').Max().Split('.');
string next = string.Format("{0}.{1}.{2}.{3}", max[0], max[1], max[2], int.Parse(max[3]) + 1);
0
ответ дан 13 December 2019 в 05:40
поделиться

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

        string VersionList = "1.0.0.0 1.0.0.1 1.0.0.2";

        List<Version> Versions = new List<Version>();

        foreach (string FlatVersion in VersionList.Split(' '))
            Versions.Add(new Version(FlatVersion));

        Versions.Sort(); Versions.Reverse();

        Version MaximumVersion = Versions[0];

        Version NewVersion = new Version(
            MaximumVersion.Major, 
            MaximumVersion.MajorRevision,
            MaximumVersion.Minor,
            MaximumVersion.MinorRevision + 1);
1
ответ дан 13 December 2019 в 05:40
поделиться

Предполагая, что ваш список строк:

List<string> stringList;

Вы можете получить последнюю запись в этом списке, используя:

string lastString = stringList[stringList.Length - 1];

Затем получить последний символ этой строки, используя:

char c = lastString[lastString.Length - 1];

Преобразовать и увеличить char в десятичное:

int newNum = Int32.Parse(c.ToString()) + 1;

Наконец, скопируйте исходную строку и замените последнее число новым:

string finalString = lastString;
finalString[finalString.Length - 1] = c;

Теперь добавьте это обратно в исходный список:

stringList.Add(finalString);
0
ответ дан 13 December 2019 в 05:40
поделиться

Я сейчас использую VB, но перевод на C # должен быть простым. Отсюда реализация вашей реальной проблемы должна быть простой - у вас есть коллекция, последний элемент - это последний номер, просто увеличьте его, замените последний элемент коллекции и снова запишите.

Imports System.Text.RegularExpressions

Module Module1

    Sub Main()
        Dim matchC As MatchCollection = Regex.Matches("111.222.333", "\d+")
        Dim i As Integer = 1
        For Each x In matchC
            Console.Write(i.ToString & " ")
            Console.WriteLine(x)
            i = i + 1
        Next
        ' remember to check the case where no matches occur in your real code.
        Console.WriteLine("last number is " & matchC.Item(matchC.Count - 1).ToString)
        Console.ReadLine()
    End Sub

End Module
0
ответ дан 13 December 2019 в 05:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: