全知全能を目指す人のありがたい雑記

何かしら意味のあるありがた~い話か、意味のない雑念だらけの日記を書く予定です。

C#で文字列を弄るなら正規表現を使いたい

ファイル名に拡張子をつけていないので、
ファイルを保存する際に、
拡張子を追記して保存するようにしたい

と仰る方を見かけたので一つサンプルコードを。

文字列操作なんて不要!
なら、正規表現で置き換えてみよう。

↓無理やり文字列の後尾に「.png」を追加するプログラム

using System;
using System.Text.RegularExpressions;

public class Program{
    public static void Main(){

        string fileName = Console.ReadLine();

        if(fileName == null){
            Console.WriteLine("入力に文字を入れてください。");
            return;
        }
        
        if(fileName.Contains(".")){
            Console.WriteLine("拡張子を.pngに置き換えます");
            fileName = Regex.Replace(fileName,@"(?<=\.)(.*)","png");
        }
        else{
            fileName = string.Concat(fileName , ".png");
        }
        
        Console.WriteLine(fileName);
    }
}

追記

↑のやつ
「aaaa.hoge.fuga」ってやると
「aaaa.png」になる。駄目コード。

ってか、少し調べてたらこんなクラスがあったで。。。
Path.ChangeExtension メソッド (String, String) (System.IO)

正規表現なんて不要!
なら、ChangeExtensionで置き換えてみよう。

↓無理やり文字列の後尾に「.png」を追加するプログラム(Ver2)

using System;

public class Program{
    public static void Main(){
        
        string fileName = Console.ReadLine();
        
        if(fileName == null){
            Console.WriteLine("入力に文字を入れてください。");
            return;
        }
        
        fileName = System.IO.Path.ChangeExtension(fileName, "png");
        
        Console.WriteLine(fileName);
    }
}

え?
1行で済むやないかーーーーーい

.NET様様だね。