Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> Get word
veiron
сообщение 18.7.2017, 23:49
Сообщение #1


********

Master
Сообщений: 1.264
Регистрация: 22.5.2012
Группа: Пользователи
Наличность: 0
Из: Белоруссии
Пользователь №: 14.972



Код
set $string 12345.456  234.987
set #a 1  //  ставлю по порядку 1,2.3,4
get word $var 1 $string        
log $var

в логе:
Код
set #a 1 = 12345
set #a 2 = 456
set #a 3 = 234
set #a 4 = 1987

Почему точка делит как два числа. Можно как нибудь нибудь сделать чтобы читало 12345.456 как 1 число?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 19.7.2017, 2:10
Сообщение #2


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26702
Пользователь №: 16.971
Возраст: 29



код
Код
set $string 12345.456 234.987       // строка
set $regexp "[^\s]+"           // регулярное выражение, означает искать все символы кроме пробела
log clear
log mode compact
set #n regexp (#position $hitstring $string $regexp)
while 1 = 1
    if #n = 1
        log $hitstring                        // вывод результата в лог
        set #z #position + size($hitstring)
        set $string delete($string 1 #z)
        set #n regexp (#position $hitstring $string $regexp)
    else
        break
    end_if
end_while
End_script

Тоже самое на луа:
Код
--lua
log ("clear") log ("mode compact")
str = "12345.456 234.987"     -- строка указывается в кавычках
for var in str.gmatch("[^%s]+") do
    log (var)
end
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
veiron
сообщение 19.7.2017, 9:50
Сообщение #3


********

Master
Сообщений: 1.264
Регистрация: 22.5.2012
Группа: Пользователи
Наличность: 0
Из: Белоруссии
Пользователь №: 14.972



Спасибо, все находит. А что надо, чтобы я мог одно любое слово из строки в переменную записать.
Код
есть массив %lv в нем строка:  
net.erh   torr   des.rv

Сейчас получается циклом все по порядку пишет, а мне надо чтобы я мог сам любое выбирать и в переменную записывать

P.S Вроде разобрался
Код
init_arr %arr %ls net.erh   torr   des.rv
set $regexp "[^\s]+"           // регулярное выражение, означает искать все символы кроме пробела
set #a 0
set #m 1    //  какое по счету слово записать в переменную
set #n regexp (#position $hitstring $string $regexp)
while 1 = 1
    if  #n = 1
        set #a #a + 1
        set %k [#a 1] $hitstring
        if  #a  = #m
            set $d %k[#a 1]
            break
        end_if
        set #z #position + size($hitstring)
        set $string delete($string 1 #z)
        set #n regexp (#position $hitstring $string $regexp)
    else
        break
    end_if
end_while
log $d
End_script


Или как-то по другому можно сделать?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 19.7.2017, 11:10
Сообщение #4


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26702
Пользователь №: 16.971
Возраст: 29



код
Код
set $string net.erh   torr   des.rv
set $regexp "[^\s]+"           // регулярное выражение, означает искать все символы кроме пробела
set #a 0
set #m 1    //  какое по счету слово записать в переменную
set #n regexp (#position $hitstring $string $regexp)
while 1 = 1
    if  #n = 1 and #a != #m
        set #a #a + 1
        set $d $hitstring
        set #z #position + size($hitstring)
        set $string delete($string 1 #z)
        set #n regexp (#position $hitstring $string $regexp)
    else
        break
    end_if
end_while
log $d
End_script
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
veiron
сообщение 19.7.2017, 11:15
Сообщение #5


********

Master
Сообщений: 1.264
Регистрация: 22.5.2012
Группа: Пользователи
Наличность: 0
Из: Белоруссии
Пользователь №: 14.972



Спасибо, то что нужно.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
veiron
сообщение 19.7.2017, 20:54
Сообщение #6


********

Master
Сообщений: 1.264
Регистрация: 22.5.2012
Группа: Пользователи
Наличность: 0
Из: Белоруссии
Пользователь №: 14.972



Код
set $string %k [7 1]    //   в массиве  04.09.2017
get word $var 1 $string
log  $var      //          в лог выводит  0x04


Как можно сделать, чтобы если в массиве дата 04, то и в переменную записало бы 04, а не 0х04 и 09 тоже записывает как 0х09?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 20.7.2017, 2:16
Сообщение #7


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26702
Пользователь №: 16.971
Возраст: 29



Код
set %k [7 1] abcd 04.09.2017 qwerty              // строка с датой
set $regexp "\d{2}\.\d{2}\.(\d{4}|\d{2})"               // дата в формате xx.xx.xxxx или xx.xx.xx
set #n regexp (#position $hitstring %k [7 1] $regexp)     // проверяем содержит ли строка дату
if #n > 0
    set $day copy($hitstring 1 2)          // копируем день
    set $month copy($hitstring 4 2)        // копируем месяц
    set $year copy($hitstring 7 4)         // копируем год
    log    $day    $month    $year
end_if
end_script
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
veiron
сообщение 20.7.2017, 8:47
Сообщение #8


********

Master
Сообщений: 1.264
Регистрация: 22.5.2012
Группа: Пользователи
Наличность: 0
Из: Белоруссии
Пользователь №: 14.972



Спасибо
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 19.4.2024, 11:23
Designed by Nickostyle