@pw0ned

Заменить последний символ строки на большой в C#, как?

Добрый вечер, практикуюсь с файлами.

Нужно заменять во всех строках последнюю букву строки на заглавную, но пока что получилось только удалить, и то почему то удаляет только с последнее строки в файле (почему так ?)...

Натолкните пожалуйста на правильную мысль, как это реализовать ?

string path = @"1.txt";
            using (FileStream fstream = File.OpenRead(path))
            {
                byte[] array = new byte[fstream.Length];
                fstream.Read(array, 0, array.Length);
                string textFromFile = System.Text.Encoding.Default.GetString(array);
                string y = textFromFile.Remove(textFromFile.Length - 1);
                Console.WriteLine(y);
                Console.ReadLine();
  • Вопрос задан
  • 1873 просмотра
Пригласить эксперта
Ответы на вопрос 2
@kttotto
пофиг на чем писать
На коленке, но примерно так
var lines = File.ReadLines(path);
foreach(var line in lines)
{
	var index = line.Length - 1
	line[index] = line[index].ToUpper()
}

var text = string.Join(lines);
File.WriteAllText(path, text);
Ответ написан
Комментировать
mindtester
@mindtester Куратор тега C#
http://iczin.su/hexagram_48
На коленке
не работает.. при чем много по чему..
к примеру вот че работает (с каментами):
using System;
using System.IO;
using System.Linq;

namespace lastChar
{
    class Program
    {
        static void Main(string[] args)
        {
            var lines = File.ReadAllLines(@"C:\Windows\System32\drivers\etc\hosts"); // для примера
            for (var i=0; i < lines.Count(); i++) // в итераторе foreach элементы readonly.. типа функциональный стиль
            {
                if (!string.IsNullOrWhiteSpace(lines[i])) // а то на пустых строках эксепшен будем ловить
                {
                    // строка, блин, штука то то же не изменяемая.. вот засада
                    var ch = lines[i].ToCharArray();
                    var idx = ch.Length - 1;
                    ch[idx] = Char.ToUpper(ch[idx]);
                    lines[i] = new string(ch);
                }
                Console.WriteLine(lines[i]);
            }
            Console.ReadKey();
            //сохраняйте как хотите
            //... и да - точки (решетки) в апкейсе остаются точками. только буквы можно апкейсить
        }
    }
}


опять же пример грубый, явно далекий от совершенства.. но работает
upd - спасибо Meloman19 за подсказку в каментах. теперь практически идеально
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы