Я не уверен, что понимаю, что Синглтон дает вам в этой ситуации, за исключением того, что у вас нет нескольких копий струн. Это никак не поможет изменить сами строки.
То, как я читаю ваш вопрос, заключается в том, что манипулирование строками в памяти (без обратной записи в файл) является критическим. Исходя из этого, есть две основные опции, StringBuilder и MemoryStream.
StringBuilder специально разработан, чтобы позволить вам эффективно изменять или добавлять данные, представленные в виде строки. Если файл не слишком велик для его размещения в памяти, StringBuilder - лучший выбор.
Вы просто передаете содержимое файла конструктору StringBuilder. Затем используйте методы, такие как Append (), Insert (), Remove (), Replace () или indexer [], чтобы изменить строковые данные по мере необходимости. Stringbuilder гарантирует, что эти операции намного эффективнее, чем выполнение стандартной операции над стандартной строкой.
Вы также можете загрузить файл в MemoryStream и затем использовать StringReader (или StringWriter), чтобы получить интерфейс типа потока (Read (), Peek (), ReadLine ( ) и т. д.) для манипулирования строкой.
Это немного больше работы, чем StringBuilder, но может быть предпочтительнее, если подход в стиле Stream лучше подходит для вашего приложения.