Paiza Cランク獲得問題（Dランク相当） 文字列処理メニュー

paizaのCランク獲得問題の解答がなかったので、備忘録として残します。
明らかに簡単な問題の場合は省略しますが、個人的に少しでも考えたコードを残していきたいと思います。
初心者ですので醜いコードを書きますが、温かい目で見守っていただけると嬉しいです。
また、より良い記述方法などありましたら、コメント等で教えていただけると嬉しいです。

# 目次
- i 文字目の出力
- 文字列の文字数
- 文字の検索
- 文字列の連結
- 部分文字列
- 文字列の挿入
- 文字列の書き換え
- 数値から文字列への変換
- 大文字から小文字への変換
- 大文字小文字の反転









## i 文字目の出力
[問題文](https://paiza.jp/works/mondai/string_primer/basic_step3/edit?language_uid=c-sharp)
```c#
using System;
class Program
{
    static void Main()
    {
        string S=Console.ReadLine();
        int i=int.Parse(Console.ReadLine());
        Console.WriteLine(S.Substring(i-1,1));
    }
}
```

## 文字列の文字数
[問題文](https://paiza.jp/works/mondai/string_primer/basic_step5/edit?language_uid=c-sharp)
```c#
using System;
class Program
{
    static void Main()
    {
        string S=Console.ReadLine();
        Console.WriteLine(S.Length);
    }
}
```

## 文字の検索
[問題文](https://paiza.jp/works/mondai/string_primer/basic_step6/edit?language_uid=c-sharp)
```c#
using System;
class Program
{
    static void Main()
    {
        string S=Console.ReadLine();
        string c=Console.ReadLine();
        Console.WriteLine(S.IndexOf(c)+1);
    }
}
```

## 文字列の連結
[問題文](https://paiza.jp/works/mondai/string_primer/basic_step7?language_uid=c-sharp)
```c#
using System;
class Program
{
    static void Main()
    {
        int N=int.Parse(Console.ReadLine());
        string strings="";
        for(int i=0;i<N;i++){
            string S=Console.ReadLine();
            strings+=S;
        }
        Console.WriteLine(strings);
    }
}
```
## 部分文字列
[問題文](https://paiza.jp/works/mondai/string_primer/normal_step1?language_uid=c-sharp)
```c#
using System;
class Program
{
    static void Main()
    {
        string S=Console.ReadLine();
        string [] ij=Console.ReadLine().Split();
        int i=int.Parse(ij[0]);
        int j=int.Parse(ij[1]);
        Console.WriteLine(S.Substring(i-1,j-(i-1)));
    }
}
```

## 文字列の挿入
[問題文](https://paiza.jp/works/mondai/string_primer/normal_step2/edit?language_uid=c-sharp)
```c#
using System;
class Program
{
    static void Main()
    {
        string S=Console.ReadLine();
        string T=Console.ReadLine();
        int N=int.Parse(Console.ReadLine());
        string strings=S.Insert(N,T);
        Console.WriteLine(strings);
    }
}
```
## 文字列の書き換え
[問題文](https://paiza.jp/works/mondai/string_primer/normal_step3?language_uid=c-sharp)
```c#
using System;
class Program
{
    static void Main()
    {
        string S=Console.ReadLine();
        string []ic=Console.ReadLine().Split();
        int i=int.Parse(ic[0]);
        string c=ic[1];
        string result = S.Substring(0, i - 1) + c + S.Substring(i);
        Console.WriteLine(result);
    }
}
```
Replaceを用いようとしましたが、
PAIZA
5 a
などの入力などでうまくいきませんでした。
(Aが全て変換されてしまう)
## 数値から文字列への変換 
[問題文](https://paiza.jp/works/mondai/string_primer/normal_step5/edit?language_uid=c-sharp)
```c#
using System;
class Program
{
    static void Main()
    {
        int X=int.Parse(Console.ReadLine());
        int Y=int.Parse(Console.ReadLine());
        int N=int.Parse(Console.ReadLine());
        string  result = (X+Y).ToString();
        Console.WriteLine(result.Substring(N-1,1));
    }
}
```
## 大文字から小文字への変換
[問題文](https://paiza.jp/works/mondai/string_primer/normal_step6/edit?language_uid=c-sharp)
```c#
using System;
class Program
{
    static void Main()
    {
       string S = Console.ReadLine();
        string lowerS = S.ToLower();
        Console.WriteLine(lowerS); 
    }
}
```
全て大文字にするにはToUpperメソッドを用います。

## 大文字小文字の反転
[問題文](https://paiza.jp/works/mondai/string_primer/normal_step8?language_uid=c-sharp)
```c#
using System;
using System.Linq;
 
public class Example
{
    public static void Main()
    {
        string S = Console.ReadLine();
 
        var chars = S.Select(c => char.IsUpper(c) ? char.ToLower(c) : char.ToUpper(c));
        var invertedCase = new string(chars.ToArray());
 
        Console.WriteLine(invertedCase); 
    }
}
```
Linqを用いて実装しました。
ラムダ式に関しては全然わかっていないので、現段階ではこんなもんか、、って感じで覚えておきます。。

参考
[C# で文字列を大文字と小文字に変換する](https://www.techiedelight.com/ja/transform-string-to-uppercase-and-lowercase-in-csharp/)