Как увеличить регистр конкретной буквы в массиве C#

Уважаемые C# не злитесь пожалуйста за такие вопросы, меня просто интересует как увеличить конкретную букву в массиве? Моя попытка это сделать на JS

 let a=["asov", "syz", "io", "fpz"];

x=a.map(re=>{arr=[...re];
 try{
 arr[2]=arr[2].toUpperCase(); return arr.join('')} catch {
   console.log("Erroz");
 }
 })
console.log(x.join(' '))

Ответы (2 шт):

Автор решения: XelaNimed

Не претендую на истину в последней инстанции, т.к. в Linq не силён, но Вашу проблему решает:

int idx = 2;

var items = new string[]{
  "abc", "abcdefg", "hi", null, ""
};

var newItems = items
    .Where(x => (x?.Length ?? -1) > idx)
    .Select(y => y.Substring(0, idx) +
        char.ToUpper(y[idx]) +
        (y.Length > idx + 1 ? y.Substring(idx + 1) : "")
    );

/* Более "читабельный" вариант

var newItems = new List<string>();

foreach(string item in items)
{
    if (!string.IsNullOrWhiteSpace(item) && item.Length > idx)
    {
        string res = item.Substring(0, idx);
        res += char.ToUpper(item[idx]);
        if (item.Length > idx + 1)
        {
            res += item.Substring(idx + 1);
        }
        newItems.Add(res);
    }
}
*/

string str = string.Join(", ", newItems);

Console.WriteLine(str);
// abC, abCdefg

"Поиграться" можно здесь.

→ Ссылка
Автор решения: Andrei Khotko

Как бы я это сделал не через LINQ, с помощью StringBuilder:

private static string[] MakeCapitalLetterForAllStringsInArrayAtIndex(string[] items, int index)
{
    if (items == null)
    {
        return null;
    }

    if (index < 0)
    {
        var itemsCopy = new string[items.Length];
        items.CopyTo(itemsCopy, 0);

        return itemsCopy;
    }

    var newItems = new string[items.Length];
    for (var i = 0; i < items.Length; i++)
    {
        newItems[i] = MakeCapitalLetterAtIndex(items[i], index);
    }
    
    // Либо вместо цикла
    // var newItems = items.Select(i => MakeCapitalLetterAtIndex(i, index)).ToArray();

    return newItems;
}

private static string MakeCapitalLetterAtIndex(string item, int index)
{
    if (item == null)
    {
        return null;
    }

    var sb = new StringBuilder(item);

    if (index < sb.Length)
    {
        sb[index] = char.ToUpper(sb[index]);
    }

    return sb.ToString();
}

Пример в использования в консоли:

static void Main(string[] args)
{
    var items = new string[] { "asov", "syz", string.Empty, "io", null, "fpz"};
    const int index = 1;

    PrintStringArray(items, "Before: ");

    var newItems = MakeCapitalLetterForAllStringsInArrayAtIndex(items, index);

    PrintStringArray(newItems, "After: ");
    ;
}

private static void PrintStringArray(string[] items, string title)
{
    Console.WriteLine($"==============={title}==============================");
    foreach (var item in items)
    {
        Console.WriteLine(item);
    }
    Console.WriteLine("======================================================");
}
→ Ссылка