目次
はじめに
C#でフォルダパスを取得する際、FolderBrowserDialog
を使って選択されたパスを受け取ることは簡単にできます。
しかし、プログラムでそのパスを処理しようとしたときに、末尾に「¥」が付いていないためにうまく動作しないというケースがありました。
私自身もこの問題に直面し、「あらかじめ末尾にバックスラッシュを付ける方法はないか」と考えて、実装してみました。
実現したいこと
- フォルダ選択ダイアログで取得したパスの末尾に、必ず「¥(バックスラッシュ)」が付いている状態にする
- 「すでに付いている場合は何もしない」という処理も含めたい
使用する構文:EndsWith("\\")
C#では、文字列の末尾を判定する際に EndsWith()
メソッドが使えます。
この関数を使って、「バックスラッシュが付いていないときだけ追加する」ように実装します。
実際のコード
以下が、ボタンを押したときにフォルダパスを取得して末尾に「¥」を自動で追加するサンプルコードです。
private void btn_choose_path_Click(object sender, EventArgs e)
{
FolderBrowserDialog dialog = new FolderBrowserDialog();
if (dialog.ShowDialog() == DialogResult.OK)
{
string path = dialog.SelectedPath;
// パスの末尾に「¥」がない場合に追加する
if (!path.EndsWith("\\"))
{
path += "\\";
}
txtBox_folder.Text = path;
}
}
コードの解説
dialog.SelectedPath
→ フォルダ選択ダイアログから取得したパスですif (!path.EndsWith("\\"))
→ 末尾が「¥(バックスラッシュ)」で終わっていないかどうかを確認していますpath += "\\";
→ 必要に応じて「¥」を追加しています
注意点:「¥」と「\」の違い
日本語で「¥」と表示される記号は、プログラム上では「バックスラッシュ(\\
)」です。
C#では、バックスラッシュはエスケープ文字としても使われるため、文字列として「¥」を表現したい場合には "\\"
と2重に記述する必要があります。
まとめ
C#でフォルダパスを扱う際には、末尾にバックスラッシュがないとファイル結合処理などでエラーや誤動作の原因になります。
このように、EndsWith("\\")
を使って**「付いていなければ追加する」ロジック**を入れることで、安定した処理が実現できます。
少しでも参考になれば幸いです。