atom90
22.08.2014, 12:23:32
Mam okno do którego wpisuje punkty x,y w oknie text area
moje pierwsze rozwiazanie wygladalo tak
Sprawdzanie stringa:
var tzmienne = /^[0-9-,. ]$/;
tylko tu poprostu mogłem wpisywać do woli spacje entery co powodowalo pewne problemy
kolejny reg wyglada juz tak
var tzmienne = /^(([-0-9 ]+\.[-0-9]+|[-0-9]+),([-0-9 ]+\.[-0-9]+|[-0-9]+)\s)+([-0-9 ]+\.[-0-9]+|[-0-9]+),([-0-9 ]+\.[-0-9]+|[-0-9]+)$/;
ogolnie prawie dobrze, lecz wtedy musze idealnie wpisywac pary np. 2,0 2,3 4,3 5,5.10
te dane musze zapisac do tablicy 2 wymiarowej ktora ma wygladac np. tak
[[0, 3], [4, 8], [8, 5], [9, 13]]
zapisuje do zapomocą splitów w taki oto sposób
var array = zmienne.split(" ");
for (var x = 0; x < array.length; x++) {
coords.push(array[x].split(","));
coords[x][0] = coords[x][0] * 1
coords[x][1] = coords[x][1] * 1
}
mnoże przez 1 wartości aby mieć inty, ale mniejsza z tym.
Ogolnie przez takie splitowanie musze miec zawsze miedzy x i y przecinek, co akurat jest dla mnie wporzadku a miedzy parami spacje. (1 spacje)
Ale formularz powinien równierz przepuszczac, jak się wpisze wiekszą ilość spacji lub np odzieli się pare enterem. w regu wystarczy dopisać to /s+|/n lecz to spowoduje, że splity wrzucą mi białe znaki do tablicy, a tego nie chce.
Jeśli ktoś jakoś nakieruje będę wdzięczny
slash^
22.08.2014, 13:05:48
A czy wyrazenie nie lepiej zapisac tak:
var str = '124 23,3 5,4 2,2 2,3';
var tab = str.match(/\d,\d/g);
console.log( tab );
Wtedy masz tablice ktora wyglada w tym przypadku tak:
["3,3", "5,4", "2,2", "2,3"]
atom90
22.08.2014, 13:54:02
akurat nie moge mieć tak tablica musi byc w takiej postaci jak podalem, ze wzgledu na plugin ktory uzywam do rysowania wykresów. Dane ogolnie powinny byc wpisywane tak ze sa dozwolone spacje i entery a separatorem jest przecinek. ogolnie przyjmuje ze separatorem miedzy parami powinna byc spacja, ale ogolnie powinno byc ze jak wpisze 1,2,3,4,5,6,7,7 to tez zadziała, ale ze splitowaniem nie wiem jak bym miał to odroznić wiec w najgorszym wypadku bym robił separator taki
var array = zmienne.split(", ");
rozwiązaniem mogło by być aby w stringu zamienił wszystkie białe znaki na np jedna spacje lub na przecinek spacje (", ").
probowałem tak
function spacja(x) {
return x.replace('/^\s+|\s+$/g', ' ');
}
zmienne2=spacja(zmienne);
ale nie działa kompletnie.
Edit1
ahh sorki zle doczytałem faktycznie działa wielkie dzieki
Edit2
Jedynie mnie ciekawi jeszcze jakby to zrobić zeby wpisywać tak np dane 2,3,4,5,6,7 lub 2,3, 4,5, 5,6 zeby tez tak to umiejetnie zapisywalo do tablicy
Edit
Jednak wystąpił ważny problem gdy wpisze wartość 4.1 np to wpisze mi do tablicy tylko 1 :/
by_ikar
22.08.2014, 15:11:00
Najłatwiej to by było rozbić splitem po przecinku, potem przejechać po takiej tablicy pętlą i sprawdzić każdy wynik pod kątem spacji i rozbić jeszcze raz. O ile dobrze zrozumiałem twoje założenia.
slash^
23.08.2014, 08:51:57
Cytat(atom90 @ 22.08.2014, 14:54:02 )

Edit2
Jedynie mnie ciekawi jeszcze jakby to zrobić zeby wpisywać tak np dane 2,3,4,5,6,7 lub 2,3, 4,5, 5,6 zeby tez tak to umiejetnie zapisywalo do tablicy
Edit
Jednak wystąpił ważny problem gdy wpisze wartość 4.1 np to wpisze mi do tablicy tylko 1 :/
http://jsfiddle.net/1njwvvjk/lub:
http://jsfiddle.net/1njwvvjk/1/
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.