Autor Zpráva
liborse
Profil
Dobrý den,

vzhledem k neochotě poskytovatele potřebuji pomocí js rozparsovat adresu (Slovenské adresy). Pomocí js (přes json) získávám z php skriptu údaje. To je vše v pohodě a funguje to parádně. Nicméně ulici dostávám jako název+číslo a já toto potřebuji rozdělit. Slovenský partner (za přístup do db platíme) neumí tyto údaje rozdělit. V PHPku bych si s tím poradil, nicméně nechci překopávat půl skriptů jen kvůli jednomu údaji a tak hledám řešení v js. Vím, že číslo by mělo (je to odhad, ale nenarazil jsem na případ, kdy by to bylo jinak) vždy za mezerou jako poslední. Napadly mě regulární výrazy (v číslu může být cokoliv, krom mezery), ale v těch já plavu a nedaří se mi. Napadlo mě řetězec "rozdělit" do pole podle mezer a poslední prvek pole by byl právě číslo a s tím už by se dalo pracovat. Ten způsob je ale asi blbost a já hledám řešení, které je hodno slušného programátora. ;)

Děkuji za případné odpovědi


Ještě mě tak napadlo toto:

var str = "Na Stráních 163";
var res = str.split(" ");
alert(res[res.length-1]);

Je to rozumné takto?
petr 6
Profil
liborse:
V PHPku bych si s tím poradil
To by me zajimalo, jak by sis s tim poradil v PHP, kdyz dle tvych slov plaves v regularnich vyrazech a rozdelit to do pole je blbost?

Velmi pravdepodobne by ale slo reseni z PHP udelat i v Javascriptu.

já hledám řešení, které je hodno slušného programátora
Pouzil bych regularni vyrazy nebo pole.
liborse
Profil
Ok, použil jsem pole a funguje to výborně. Někdy mám holt potíž poznat, co je "pěkné" a co ne. Funguje to rychle a spolehlivě a nakonec jsem si našel řešení sám. Uvidíme, jak se to osvědčí v praxi. Omlouvám se za spam. ;) Reg. výrazy by byly čištší, ale nemohu tím strávit další hodinu. ;) Díky za radu i za popíchnutí. Někdy je to potřeba.
Joker
Profil
liborse:
Raději bych to taky udělal před oddělená políčka.

Nicméně regulár na rozdělení adresy by nemusel být tak hrozný.
Když vyjdu z toho, že ten text bude členěný:
1. Text (ulice)
2. mezera číslo (čp)
3. možná písmeno (existují i čp typu 13a)
4. možná lomítko a číslo (č. orientační)

#^(.+) ([1-9][0-9]*[a-z]?)(\/[1-9][0-9]*[a-z]?)?$#

První závorka bude ulice, druhá čp a třetí čo (včetně lomítka na začátku).

Drobná úprava: Na začátku bude asi vhodnější ^(.+), než (^.+)
A ještě by asi na konci měl být dolar.
_es
Profil
[#4] Joker:
Neviem, či existuje nejaká ulica s viac ako 1 000 popisnými číslami, no ak áno, tak aj v popisnom čísle môže byť, možno teoreticky, medzera.
Joker
Profil
_es:
či existuje nejaká ulica s viac ako 1 000 popisnými číslami
Čtyřmístná čísla popisná jsou docela běžná (není to podle ulic, ale podle katastru; Nejvyšší, na které si teď reálně vzpomenu, je kolem 2300).
Ale ještě jsem neviděl, aby v nich někdo psal mezeru.

Jinak doplnil jsem ještě dolar na konec regulárního výrazu, protože ten původní by třeba z „náměstí 28. října 123“ vyrobil „náměstí 28“.
liborse
Profil
Díky za podněty. Já nakonec zvolil to řešení s polem. Zvládlo to i vámi zmiňovanou ulici náměstí 28. října 123. Ještě vyzkouším ty mezery, to by pak ten způsob nefungoval.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: