Что нового

Работа со строкой. Удаление частей текста

Firestarter

Новичок
Сообщения
54
Репутация
0
Добрый день. Подскажите каким выражением можно привести переменную txt1 в txt2.
т.е. нужно убрать весь текст, что находится в {} вместе с самими скобками.

Код:
$txt1 = "["FIRE200",{},8,1,"200000",0,22],["FIRE201",{"a":"1.39"},126,1,"200000",0,22]"
$txt2 = "["FIRE200",8,1,"200000",0,22],["FIRE201",126,1,"200000",0,22]"
 

Tempo

AutoIT Гуру
Сообщения
616
Репутация
205
Firestarter
Код:
$sText = '["FIRE200",{},8,1,"200000",0,22],["FIRE201",{"a":"1.39"},126,1,"200000",0,22]'
MsgBox(0, "", StringRegExpReplace($sText, ",\{.*?\}", ""))
 
Автор
F

Firestarter

Новичок
Сообщения
54
Репутация
0
Спасибо) И еще нужна помощь в регулярке StringRegExpReplace
и еще в одной строке
Код:
$r='"pow":22,"min":"onezero","alg":"dnx","min":"onezer1.2.2","alg":"dnx","lamp":2'

убрать ,"min":"onezero","alg":"dnx". при этом выделенная часть текста может меняться к примеру на ,"min":"purj","alg":"etc"

Вобщем должен получиться результат:
Код:
$r='"pow":22,"min":"onezer1.2.2","alg":"dnx","lamp":2'
 

Norm

Продвинутый
Сообщения
268
Репутация
69
Здесь нужно понять к чему привязаться. Выданой Вами информации не достаточно.
Либо это позиция этого искомого блока в строке, либо нужно перечислить все варианты, которые могут поменяться.
Дайте побольше или целый пример строки, если она большая, или несколько (кек можно больше), если они не маленькие.
 
Автор
F

Firestarter

Новичок
Сообщения
54
Репутация
0
на самом деле строка очень большая. дополнил под знаком вопроса что может в ней меняться а что неизменно всегда.

****"pow":??,"min":"???","alg":"???","min":"???","alg":"???","lamp":?****

нужно вырезать первое вхождение ' "min":"???","alg":"???", ' покажу наверное лучше на скриншоте, для понятия.
 

Вложения

  • Безымянный.jpg
    Безымянный.jpg
    50.8 КБ · Просмотры: 4

Norm

Продвинутый
Сообщения
268
Репутация
69
Дайте строку побольше или описывайте подробней.
Встречается один раз в тексте? Текст многострочный? Если да, то где начало и конец цтрок.
 
Автор
F

Firestarter

Новичок
Сообщения
54
Репутация
0
Текст идет непрерывно и без всяких пробелов в одну строку. Такая комбинация встречается несколько раз, но всегда в одном месте находится.
Вобщем прикрепил.
 

Вложения

  • file.txt
    778 байт · Просмотры: 2
  • Безымянный2.jpg
    Безымянный2.jpg
    25.6 КБ · Просмотры: 1
Последнее редактирование:

Norm

Продвинутый
Сообщения
268
Репутация
69
Если я правильно понял, то нужно было искать ("miner"... "algo"), а не ("min"... "alg")
Код:
Local $sString = '{"id":5380968,"rigname":"FiRE201","ip_addresses":"192.168.88.101","boot_time":1692685629,"stats_time":1692760225,"miner_start_time":1692685785,'& _
    '"power_draw":580,"miner":"onezerominer","algo":"dynexsolve","miner":"onezerominer1.2.2","algo":"dynexsolve","hash":11.361,"accepted":2677,"rejected":12,"total":2689,'& _
    '"ratio":99.55,"temps":"75,74,75,75,75,76,76,69","fans":"35,35,32,39,52,32,31,31"},{"id":268464,"rigname":"FiRE202",'& _
    '"ip_addresses":"192.168.88.102","boot_time":1692685954,"stats_time":1692760229,"miner_start_time":1692686011,'& _
    '"power_draw":556,"miner":"onezerominer","algo":"dynexsolve","miner":"onezerominer1.2.2","algo":"dynexsolve","hash":10.917,"accepted":2788,'& _
    '"rejected":13,"total":2801,"ratio":99.54,"temps":"71,70,67,68,74,64,67,68","fans":"52,54,53,52,53,51,54,54"}'

ConsoleWrite($sString & @CRLF)
$sString = StringRegExpReplace($sString, '(power_draw":[^,]+)(,"miner":"[^"]+","algo":"[^"]+")', '$1')
ConsoleWrite($sString & @CRLF)
 
Автор
F

Firestarter

Новичок
Сообщения
54
Репутация
0
Все верно, то я сокращал просто) Благодарю!
 
Верх