GaGlets Ierakstīts Oktobris 14, 2014 Share Ierakstīts Oktobris 14, 2014 Saviem garadarbiem bija nepieciešams izveidot līnijas pārbaudi ar regex.Līniju struktūra ir specifiska līdz ar to izveidojās ļoti specifisks un nesmuks rezultāts kaut gan strādā kā nākas."^\S([A-Za-z+\s*]+):\s?(\S[A-Za-z+\s*]+):\s?([0-9]+)\s?:\s?([0-9]+)$" Līnijas paraugi: Tottenham Hotspur : Stoke City : 0 : 0 West Ham United : Wigan Athletic : 2 : 1 Fulham : Liverpool : 1 : 2 Var gadīties arī tā ka līnijā ailes ir izkārtotas ar dažāda tipa atstarpēm izņemot \n (tie būtu \t vai vairākas parastās atstarpes) Nedrīkst būt tā, ka uzķer līniju kurā: (trūksts viens vai abi nosaukumi) (trūkst viens vai abi rezultāti) ( nav : starp ailēm ) Būtu pateicīgs redzēt kādu vienkāršāku risinājumu no kura pamācīties. Link to comment Share on other sites More sharing options...
japets Oktobris 14, 2014 Share Oktobris 14, 2014 Ja regex šķiet pārāk sarežģīts un grūti uzturams, tad izmanto parastu funkciju, kas sadalītu pēc ":" un pārbaudītu katru gabaliņu kā vien vajag. 1 Link to comment Share on other sites More sharing options...
versatile Oktobris 14, 2014 Share Oktobris 14, 2014 Konkrētais regexis jau nav nekas krimināls. Link to comment Share on other sites More sharing options...
itanium Oktobris 14, 2014 Share Oktobris 14, 2014 Man ar liekas, ka nav nekas traks. Ja nav problēmas ar performanci, tad neredzu nekādu jēgu tērēt laiku, lai kaut ko mainītu. Link to comment Share on other sites More sharing options...
Eric Oktobris 14, 2014 Share Oktobris 14, 2014 Lai risinājums būtu vieglāk uzturams, es ieteiktu problēmu risināt pa soļiem. Kad radīsies vajadzība pielikt vēl kādu pārbaudi, nebūs jāburās pa to izteiksmi foreach(var line in file) { var components = line.split(':'); if (components.length !== 4) { throw new Exception('Slikts inputs'); } else { for(var i=0;i<compnents.length;i++) { components[i] = components[i].trim(); if (components[i].length === 0) { throw new Exception('Slikts inputs'); } // te var darīt kko tālāk ar ielasītajām vērtībām } } } 1 Link to comment Share on other sites More sharing options...
Recommended Posts
Izveido kontu, vai pieraksties esošajā, lai komentētu
Jums ir jābūt šī foruma biedram, lai varētu komentēt tēmas
Izveidot jaunu kontu
Piereģistrējies un izveido jaunu kontu, tas būs viegli!
Reģistrēt jaunu kontuPierakstīties
Jums jau ir konts? Pierakstieties tajā šeit!
Pierakstīties tagad!