Labvakar,
Nevaru samierināties, ka daudziem manas profesijas pārstāvjiem piemīt spēja sarežģīt lietas. Reāls piemērs no dzīves, kods atrast
atkļūdojot svešu kodu.
<script type="text/javascript">
function Trim(s)
{
while ((s.substring(0, 1) == ' ') || (s.substring(0, 1) == '\n') || (s.substring(0, 1) == '\r'))
{
s = s.substring(1, s.length);
}
while ((s.substring(s.length - 1, s.length) == ' ') || (s.substring(s.length - 1, s.length) == '\n') || (s.substring(s.length - 1, s.length) == '\r'))
{
s = s.substring(0, s.length - 1);
}
return s;
}
</script>
Uzmetot aci, pirmā doma, jāiet pakaļ aliņam!. Parādījās reāla sausuma sajūta mutē. Interesanti, cik uz šo koda rakstīšanu cilvēkam patērēts laika? Cik vel viņš to atkļūdoja? Lai paliek vēsturē!
Sākam ar koda analīzi! Kāds ir koda galvenais uzdevums? Simbolu kopā, no kopas sākuma un beigām izgriezt visus tukšuma simbolus (atstarpe, kursora pārnesumus uz jaunu rindu). Viss darbojās. Pirmais likums, ja strādā – neaiztiec. Bet likumi ir rakstīti lai tos pārkāptu.
Lai šo te darbību uzrakstītu optimālā palīgā nāk regulārās izteiksmes. Tās speciāli ir domātas šādai un līdzīgām operācijām ar simbolu kopām (string)
Mazliet pārrakstot , funkcija izskatās jau šādi.
<script type="text/javascript">
function Trim(s) {
return s.replace(/^\s+|\s+$/g, '');
}
</script>
Nu jau ir patīkami skatīties
Apliek tikai mazliet padomāt, lai šādu te kodu cilvēki nekopētu no vietas uz vietu (Copy/Paste) iztaisīt to kā tipa String sastāvdaļu.
<script type="text/javascript">
String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g, ''); }</script>
Tagad varam rakstīt daudz smukākas konstrukcijas. Piemēram:
alert(" hello ".trim().length);
Ja savā darbā lieto ASP.NET AJAX, vai arī jQuery tad rakstīt fukciju nav vajadzības:
Gadījumā ar ASP.NET galvenais nosacījums ir lai .aspx failos tiktu definēts ScriptManager
<form id="ApplicationForm" runat="server">
<asp:ScriptManager runat="server" />
</form>
Un kodā rakstot atkal
alert(" hello ".trim().length);
visam būtu jādarbojas.
Gadījumā ar jQuery kods izskatās mazliet savādāk
alert($.trim(" hello ").length);
Abas implementācijas ir ļoti līdzīgas, lai apskatīs kāds tad kods ir, uzrakstam šadas te rindiņas:
alert(" hello ".trim);alert($.trim);
No savas puses atliek tikai piebilsts, pirms ko rakstīt, apskaties internetā, pastāv 99% varbūtība, ka kas līdzīgs ir rakstīts. Atliek tikai pielāgot savām vajadzībām!
Cerams noderēs!
Posted
Nov 22 2008, 03:03 PM
by
andrejs.mamontovs