Rekomendowane odpowiedzi

Opublikowano

kalkulator tekstów

Potrzebuję lispa do zmiany konkretnych wartości w tekstach, poprzez np. dodanie/odjęcie stałej wartości.

Mam pod ręką dwa lispy, z czego jeden robi świetną robotę dla pewnej grupy tekstów (mathtext) a drugi, nieco inny, działa, ale nie tak, jak ja bym chciała.

Tak więc mam dwa rodzaje tekstów (mono-textów w tym wypadku, choć )

1) tekst będący w całości liczbą, np 12.22

2) tekst zawierający w ciągu znaków alfanumerycznych tę liczbę, np "ab12, c1415, do końca 12.22"

Potrzebuję np. dodać do wybranych (wielu) liczb jakąś wartość, np. 0.25

a) w tekstach 1) stosuję lisp "mathtext", wyizolowuję pożądane teksty i zmieniam je wszystkie o zadaną wartość (nie tworzę nowych tylko zastępuję wartości)

b) analogicznie chciałabym to zrobić z tekstami 2), ale TextCalcV1-0 choć działa to nie tak jak lisp mathtext. Jest w nim natomiast pożądana funkcja wynajdowania ciągów liczbowych i wyboru właściwego ciągu.

przykład: z ciągu a-n "ab12, c1415, do końca 12.22" wyłowi 12, 1415 oraz 12.05 jako trzy liczby i pozwoli na wybór jednej z nich do dalszej do zmiany. I na tym kończy się jego użyteczność bo do zmiany potrzebuje tekstu wartości jaka mamy dodać/udjąć oraz wstawia nową wartość a nie zastępuje w tekście "ab12, c1415, do końca 12.22" pozycji "12.22" na "ab12, c1415, do końca 12.47"

TextCalcV1-0 ma jeszcze jedną wadę, brak możliwości ustawienia własnego zaokrąglenia, zaokrąglenie wstawia zgodnie z ustawieniami "units"

Czy ktoś mógłby się pochylić nad tym problemem?

 

mathtext.lsp TextCalcV1-0.lsp

Opublikowano

Chciałbym się upewnić.

Bo mamy taki ciąg "ab12, c1415, do końca 12.22

w jaki sposób można w nim znaleźć  

Cytat

12, 1415 oraz 12.05

Chyba, że to chodzi o 12.22.

I teraz po znalezieniu tych 3 liczb użytkownik ma wskazać jedną z liczb i dodać do wybranej inną liczbę (wpisaną za każdym razem z klawiatury czy zdefiniowaną na początku?). Dokładność ma być taka jak tej pierwszej znalezionej liczby czy taka jaką liczbę się wpisze?

Opublikowano

obrazowo tak to sobie wyobrażam:

1)  z ciągu np

s(df125,56<12.22x niezależnie od spacji czy innych znaków, wyciąga tylko liczby, w tym wypadku cztery s(df12;5,56<12.22x

12 5 56 i 12.22

możemy wygra ręcznie lub zadać kryterium (tylko liczby >12)

kalkulator zmienia tylko liczbę >12

2) alternatywa, wymagająca kilku kroków, ale chyba prostrza, bo wtedy wystarczył by lisp robiący rozbicie tego ciągu tekstowego s(df12;5,56<12.22na odcinki zawierające te liczby (przerwanie w miejscu gdzie cyfra zaczyna lub łączy się liczba ze znakiem innym niż liczba lub kropka): s(df 12 56 12.22 x

teraz możemy już wyłowić potrzebne nam liczby wg kryterium wielkości, wrzucić je na osobną warstwę, wyizolować i przeliczyć mathtext - em

3) Potem dla dopełnienia "dzieła" można by skleić z powrotem rozbite w drobny mak teksty, też stosując kryterium odległości między znakami (nie będą większe niż spacja) ale to co najpotrzebniejsze i bez sklejania mamy

 

Opublikowano
6 godzin temu, Adam Klaczek napisał:

Może wystarczy standardowe polecenie _FIND?

 

 

niestety nie wystarczy, bo to wiele liczb, ale każda ma inną wartość. Tak więc mathtext niezbędny

Opublikowano

i jeszcze jedno,

spacja też powinna być traktowana jako znak (ciąg znaków może zwierać spacje), więc podział odcinków nie powinien pomijać spacji, z wyjątkiem takim że spacje jako nie liczby powinny "znaleźć" się w odcinkach literowych

Opublikowano
Godzinę temu, alf napisał:

obrazowo tak to sobie wyobrażam:

1)  z ciągu np

s(df125,56<12.22x niezależnie od spacji czy innych znaków, wyciąga tylko liczby, w tym wypadku cztery s(df12;5,56<12.22x

12 5 56 i 12.22

możemy wygra ręcznie lub zadać kryterium (tylko liczby >12)

kalkulator zmienia tylko liczbę >12

2) alternatywa, wymagająca kilku kroków, ale chyba prostrza, bo wtedy wystarczył by lisp robiący rozbicie tego ciągu tekstowego s(df12;5,56<12.22na odcinki zawierające te liczby (przerwanie w miejscu gdzie cyfra zaczyna lub łączy się liczba ze znakiem innym niż liczba lub kropka): s(df 12 56 12.22 x

teraz możemy już wyłowić potrzebne nam liczby wg kryterium wielkości, wrzucić je na osobną warstwę, wyizolować i przeliczyć mathtext - em

3) Potem dla dopełnienia "dzieła" można by skleić z powrotem rozbite w drobny mak teksty, też stosując kryterium odległości między znakami (nie będą większe niż spacja) ale to co najpotrzebniejsze i bez sklejania mamy

 

Dziękuję, postaramy się coś zaproponować w przyszłym tygodniu.

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie