Rumah >pembangunan bahagian belakang >C++ >Apakah Cara Paling Cekap untuk Mengalih Keluar Aksara Khas daripada Rentetan?

Apakah Cara Paling Cekap untuk Mengalih Keluar Aksara Khas daripada Rentetan?

DDD
DDDasal
2024-12-29 15:27:11444semak imbas

What's the Most Efficient Way to Remove Special Characters from a String?

Pendekatan Paling Cekap untuk Mengalih Keluar Aksara Khas daripada Rentetan

Dalam pembangunan perisian, adalah penting untuk mengendalikan aksara khas dalam rentetan dengan berkesan. Untuk mengalih keluar semua aksara khas dengan cekap kecuali simbol abjad angka, garis bawah dan titik, terdapat beberapa pendekatan.

Satu pendekatan yang biasa adalah untuk melelaran melalui aksara rentetan mengikut aksara, menyemak setiap aksara terhadap set yang dibenarkan. Kaedah ini agak mudah untuk dilaksanakan tetapi mungkin bukan yang paling berkesan untuk rentetan besar.

<br>rentetan statik awam RemoveSpecialCharacters(string str) {</p>
<pre class="brush:php;toolbar:false">StringBuilder sb = new StringBuilder();
foreach (char c in str) {
    if ((c >= '0' && c <= '9') || (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || c == '.' || c == '_') {
        sb.Append(c);
    }
}
return sb.ToString();

}

Untuk kecekapan yang lebih baik, adalah disyorkan untuk gunakan pendekatan yang lebih langsung dengan jadual carian pra-dimulakan. Ini menghapuskan keperluan untuk semakan bersyarat dan mengurangkan bilangan akses tatasusunan dengan ketara.


bool statik peribadi[] _lookup;

Program statik() {

_lookup = new bool[65536];
for (char c = '0'; c <= '9'; c++) _lookup[c] = true;
for (char c = 'A'; c <= 'Z'; c++) _lookup[c] = true;
for (char c = 'a'; c <= 'z'; c++) _lookup[c] = true;
_lookup['.'] = true;
_lookup['_'] = true;

}

rentetan statik awam RemoveSpecialCharacters(string str) {

char[] buffer = new char[str.Length];
int index = 0;
foreach (char c in str) {
    if (_lookup[c]) {
        buffer[index] = c;
        index++;
    }
}
return new string(buffer, 0, index);

}

Walaupun ungkapan biasa juga boleh digunakan, prestasinya mungkin lebih perlahan daripada pendekatan di atas, terutamanya untuk rentetan kecil.

Atas ialah kandungan terperinci Apakah Cara Paling Cekap untuk Mengalih Keluar Aksara Khas daripada Rentetan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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