Автор Тема: Получить из строки каждый третий символ  (Прочитано 993 раз)

0 Пользователей и 2 Гостей просматривают эту тему.

Эта тема содержит сообщение, помеченное как лучший ответ. Кликните здесь для перехода к этому сообщению.

Оффлайн NONer [?]

  • Новичок
  • *
  • Сообщений: 25
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Здравствуйте.
Можно ли с помощью регулярного выражения получить из строки каждый третий символ?
Если да, то как?

Вот исходная строка: "6(п ?qл*ип4в"yен d8п"
В итоге должно получиться "привет"

Русское сообщество AutoIt

Получить из строки каждый третий символ
« Отправлен: Июнь 09, 2018, 07:56:04 »

Оффлайн mr.Gbabak [?]

  • Новичок
  • *
  • Сообщений: 202
  • Репутация: 18
  • Пол: Мужской
    • Награды
исходная строка: "6(п ?qл*ип4в"yен d8п"
Исходная строка ошибочна.
Код: AutoIt [Выделить]
Local $string = '6(п ?qл*ип4в"yен d8п'
Local $sString

$aString = StringRegExp ($string, '.', 3)
For $i=2 To UBound($aString)-1 step 3
    $sString = $sString&$aString[$i]
Next

MsgBox (0, '', $sString)


Оффлайн NONer [?]

  • Новичок
  • *
  • Сообщений: 25

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Да, действительно, в строке немного ошибся.

Вот правильная исходная строка: "6(п ?рл*ип4в"yен т8п".

mr.Gbabak,
Вопрос был только про "регулярное выражение", то есть StringRegExp или StringRegExpReplace - одной командой, без циклов.

Оффлайн gunter123 [?]

  • Осваивающий
  • **
  • Сообщений: 109
  • Репутация: 40
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Код: AutoIt [Выделить]
#include <Array.au3>
$sText = '6(п ?рл*ип4в"yен т8п'

$aResult = StringRegExp($sText, '(?s)..(.)', 3)
_ArrayDisplay($aResult)

« Последнее редактирование: Июнь 09, 2018, 12:58:58 от gunter123, Причина: сыпысы »
Is it future or is it past?

Русское сообщество AutoIt

Re: Получить из строки каждый третий символ
« Ответ #3 Отправлен: Июнь 09, 2018, 10:53:09 »

Оффлайн mr.Gbabak [?]

  • Новичок
  • *
  • Сообщений: 202
  • Репутация: 18
  • Пол: Мужской
    • Награды
NONer  [?]
Цитировать
одной командой, без циклов.
Я конечно не гуру, но на мой взгляд, без цикла не получиться...А чем вас циклы не устраивают?

gunter123  [?]
Цитировать
StringRegExp($sText, '(?s)..([A-zА-я])', 3)
Символ или букву?!

Оффлайн InnI [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 3838
  • Репутация: 1014
    • Награды
  • Версия AutoIt: 3.3.14.0
NONer  [?]
Цитировать
без циклов
Код: AutoIt [Выделить]
$s = '6(п ?рл*ип4в"yен т8п'
$s = StringTrimRight(StringRegExpReplace($s, "..(.)", "\1"), Abs(@extended * 3 - StringLen($s)))
ConsoleWrite($s & @CRLF)


Помечен как лучший ответ пользователем NONer Отправлен Июнь 13, 2018, 02:23:54

Оффлайн Alofa [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1424
  • Репутация: 209
  • Пол: Мужской
  • Windows 7 /10 [x64]
    • Награды
  • Версия AutoIt: 3.3.12.0
Код: AutoIt [Выделить]
$sSting = '6(п ?рл*ип4в"yен т8п'
$sSting = StringRegExpReplace($sSting, '.{1,2}(.?)', '\1')
MsgBox(262144, Default, '[' & $sSting & ']')

« Последнее редактирование: Июнь 09, 2018, 14:53:44 от Alofa »

Оффлайн InnI [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 3838
  • Репутация: 1014
    • Награды
  • Версия AutoIt: 3.3.14.0
Alofa
Попробуйте удалить последний символ п ;)

Русское сообщество AutoIt

Re: Получить из строки каждый третий символ
« Ответ #7 Отправлен: Июнь 09, 2018, 14:33:05 »

Оффлайн Alofa [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1424
  • Репутация: 209
  • Пол: Мужской
  • Windows 7 /10 [x64]
    • Награды
  • Версия AutoIt: 3.3.12.0
OffTopicInnI :thanks: подправил

Оффлайн mr.Gbabak [?]

  • Новичок
  • *
  • Сообщений: 202
  • Репутация: 18
  • Пол: Мужской
    • Награды
Alofa
OffTopicне могли бы вы на пальцах объяснить значение повторителей в регулярных выражения?
Ну или справку какую почитать? Кроме стандартной, там очень поверхностно описано.

Оффлайн Alofa [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1424
  • Репутация: 209
  • Пол: Мужской
  • Windows 7 /10 [x64]
    • Награды
  • Версия AutoIt: 3.3.12.0
OffTopic
... Кроме стандартной, там очень поверхностно описано.
Ну а если стандартную справку капнуть по глубже -> Функции пользователей/Функции по разделам/Обучение.
Или в данном разделе форума (Регулярные выражения и прочее), самая первая закрепленная тема.

Оффлайн mr.Gbabak [?]

  • Новичок
  • *
  • Сообщений: 202
  • Репутация: 18
  • Пол: Мужской
    • Награды
Ну а если стандартную справку капнуть по глубже -> Функции пользователей/Функции по разделам/Обучение.
Или в данном разделе форума (Регулярные выражения и прочее), самая первая закрепленная тема.[/off]
OffTopicну это смотря, что считать стандартной справкой. У меня ассоциации со справкой *.chm...но во всяком случа е спасибо

Оффлайн NONer [?]

  • Новичок
  • *
  • Сообщений: 25

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Alofa, Спасибо - это то, что мне было нужно.

gunter123, тоже правильно, но я хотел именно в одну строку.

Русское сообщество AutoIt

Re: Получить из строки каждый третий символ
« Ответ #12 Отправлен: Июнь 13, 2018, 02:27:20 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
16 Ответов
9020 Просмотров
Последний ответ Май 02, 2010, 12:13:37
от madmasles
1 Ответов
2506 Просмотров
Последний ответ Август 01, 2011, 22:50:05
от Garrett
3 Ответов
2698 Просмотров
Последний ответ Сентябрь 13, 2011, 21:26:55
от mrdig
9 Ответов
3223 Просмотров
Последний ответ Октябрь 17, 2011, 12:54:41
от Petro78
3 Ответов
3446 Просмотров
Последний ответ Февраль 12, 2012, 15:03:53
от Dimmak
4 Ответов
2614 Просмотров
Последний ответ Май 27, 2012, 23:19:28
от jam
5 Ответов
5520 Просмотров
Последний ответ Июнь 16, 2013, 13:27:10
от akmal18
0 Ответов
2677 Просмотров
Последний ответ Июнь 16, 2013, 13:03:20
от madmasles
0 Ответов
466 Просмотров
Последний ответ Ноябрь 30, 2014, 16:44:21
от max1300
2 Ответов
1669 Просмотров
Последний ответ Май 16, 2016, 21:42:51
от McNamara