Rumah > pembangunan bahagian belakang > C++ > Bagaimana Mengeluarkan Aksara Haram dengan Berkesan daripada Laluan Fail dan Nama Fail?

Bagaimana Mengeluarkan Aksara Haram dengan Berkesan daripada Laluan Fail dan Nama Fail?

DDD
Lepaskan: 2025-01-21 09:06:12
asal
258 orang telah melayarinya

How to Effectively Remove Illegal Characters from File Paths and Filenames?

Kosongkan aksara haram dalam laluan dan nama fail

Tugas contoh pengaturcaraan ini adalah untuk mengalih keluar laluan tidak sah dan aksara fail daripada rentetan tanpa menghasilkan ralat. Walaupun kod yang diberikan bertujuan untuk menyelesaikan masalah ini, ia nampaknya tidak berfungsi. Mari analisa bahagian yang hilang:

Kod

cuba mengalih keluar aksara haram daripada rentetan menggunakan kaedah Trim. Walau bagaimanapun, Trim hanya boleh mengalih keluar aksara ruang putih seperti ruang dan tab pada permulaan dan penghujung rentetan. Ia tidak mempunyai kesan pada aksara bukan ruang putih.

Untuk mengalih keluar aksara haram dengan berkesan, anda perlu menggunakan kaedah khusus yang disediakan oleh ruang nama System.IO. Berikut ialah kod diubah suai yang mengendalikan tugas ini dengan cekap:

<code class="language-csharp">using System;
using System.IO;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string illegal = " \"M\"\"\a/ry/ h**ad:>> a\/:*?\"| li*tt|le|| la\"mb.?";

            // 删除无效的文件字符
            illegal = illegal.Replace(Path.GetInvalidFileNameChars(), "");

            // 删除无效的路径字符
            illegal = illegal.Replace(Path.GetInvalidPathChars(), "");

            Console.WriteLine(illegal);
            Console.ReadLine();
        }
    }
}</code>
Salin selepas log masuk

Dalam kod yang diubah suai ini, kami menggantikan kaedah Replace dengan kaedah Trim, yang membolehkan kami menentukan aksara yang hendak dialih keluar daripada rentetan. Dengan memanggil Path.GetInvalidFileNameChars() dan Path.GetInvalidPathChars() kami masing-masing mendapat tatasusunan fail tidak sah dan aksara laluan. Kami kemudian menghantar tatasusunan ini sebagai aksara untuk diganti, dengan berkesan mengalih keluarnya daripada rentetan asal.

Berikut ialah penyelesaian lain yang disediakan oleh Ceres dalam urutan perbincangan lain:

<code class="language-csharp">public string RemoveInvalidChars(string filename)
{
    return string.Concat(filename.Split(Path.GetInvalidFileNameChars()));
}</code>
Salin selepas log masuk

Kod ini menggunakan kaedah Split untuk memisahkan rentetan di lokasi aksara tidak sah dan kemudian memasang semula subrentetan yang terhasil untuk mencipta rentetan baharu yang tidak mengandungi aksara tidak sah.

Anda mungkin memilih untuk menggantikan aksara yang tidak sah dengan aksara tertentu, seperti garis bawah:

<code class="language-csharp">public string ReplaceInvalidChars(string filename)
{
    return string.Join("_", filename.Split(Path.GetInvalidFileNameChars()));    
}</code>
Salin selepas log masuk

Kod ini menggantikan semua aksara yang tidak sah dengan garis bawah, menjadikannya sesuai untuk senario yang anda mahu mengekalkan struktur asal laluan atau nama fail.

Penyelesaian ini menyediakan cara yang berkuasa dan berkesan untuk menghapuskan aksara yang menyalahi undang-undang dalam rentetan fail dan laluan, memastikan keserasian dan mencegah kemungkinan ralat sistem fail.

Atas ialah kandungan terperinci Bagaimana Mengeluarkan Aksara Haram dengan Berkesan daripada Laluan Fail dan Nama Fail?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan