Что нового

[Данные, строки] Удаление части теста после запятой

sashazzz

Новичок
Сообщения
10
Репутация
1
Помогите пожалуйста...получаем текст заголовка окна

Local $Title = WinGetTitle("[ACTIVE]", "")
текст имеет вид "SPY, SPY - Flexible Grid Main@thinkorswim [build 1846.27]" (без кавычек)

нужно из этого текста удалить текст после запятой! текст может изменяться,НО конструкция текста всегда одинаковая, .т.е
DUST, DUST - Flexible Grid Main@thinkorswim [build 1846.27] или A, A - Flexible Grid Main@thinkorswim [build 1846.27] (видим что изменения происходят только до запятой и после запятой,а часть после "-" не изменяется!
Конкретнее,если имеем:

из "A, A - Flexible Grid Main@thinkorswim [build 1846.27]" нужно получить "А"
из "DUST, DUST - Flexible Grid Main@thinkorswim [build 1846.27]" нужно получить "DUST"
из "S, S - Flexible Grid Main@thinkorswim [build 1846.27]" нужно получить "S"
и так далее!!!
 

urrya

Новичок
Сообщения
159
Репутация
1
можно так :


Код:
$text = 'A, A - Flexible Grid Main@thinkorswim [build 1846.27]'
$var = StringMid($text, 1, 1)   ;  StringMid( "исходный текст", номер первого символа[, кол-во символов])
MsgBox(0,'', $var)
 

urrya

Новичок
Сообщения
159
Репутация
1
InnI пример то что надо, мой только к конкретному тексту :smile:
 

cnm

Новичок
Сообщения
58
Репутация
2
$str = "DUST, DUST - Flexible Grid Main@thinkorswim [build 1846.27]"
$txt = StringLeft($str, StringInStr($str, ",") - 1)


Разделили бы на части, чтобы вопрощающий понял что вы сделали.

Код:
$pos= StringInStr($str, ",") 
определяем позицию запятой.

$txt = StringLeft($str, $pos - 1)
отсекаем левую часть строки до запятой минус  один символ.
 

MockeR

Знающий
Сообщения
101
Репутация
14
можно так
Код:
$text = "SPY, SPY - Flexible Grid Main@thinkorswim [build 1846.27]"
$pattern = "(.+?),.*"

$res = StringRegExpReplace($text, $pattern, "$1")
MsgBox(0, "", $res)
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
До кучи. :smile:
Код:
ConsoleWrite(StringRegExpReplace('SPY, SPY - Flexible Grid, Main@thinkorswim [build 1846.27]', ',.*$', '') & @LF)



Добавлено:
Сообщение автоматически объединено:

sashazzz, cnm,
Предупреждение За нарушение правил форума (пункт В.11):
Любые отрывки AutoIt кода необходимо заключать в тег [autoit]
autoit.gif
(подробнее), а обычный код соответственно в тег [code]
code.gif
(подробнее). Также большие выдержки текста помещайте под тег [spoiler]
spoiler.gif
(подробнее), там где это поддерживается естественно. Как в случае с названием темы, также короткое и эргономичное сообщение привлекает больше внимания, и шансы на получение конкретного ответа увеличиваются.


С уважением, ваш Глобальный модератор.
 
A

Alecsis1

Гость
[Данные, строки] Re: [Данные, строки] Удаление части теста после запятой

Код:
$pos= StringInStr($str, ",")        ; определяем позицию запятой.

; imho, не помешает обработать случай, когда запятой не нашлось
; как-то так:
;
If $pos > 0 Then
    $txt = StringLeft($str, $pos - 1)  ; отсекаем левую часть строки до запятой минус  один символ.
  Else
    $txt = $str    ; запятой нет, для примера выведем строку-источник как есть
EndIf
 

Юрий

Новичок
Сообщения
82
Репутация
3
Alecsis1
или так:
Код:
$String = "hello1234,second part 9586"
$Position = StringSplit($String,",")
If Not @error Then
	MsgBox(64 , "Вот, пожалуйста." , $Position[1])  ; выведет "hello1234"
Else
	MsgBox(16 , "Ну звиняй." , "Не нашёл я запятой =(")
EndIf
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Юрий [?]
У Вас ошибка. Вы проверяйте перед публикацией результат.



Добавлено:
Сообщение автоматически объединено:

sashazzz, cnm,
Я Вам советую обратить внимание на предупреждение.
 

Юрий

Новичок
Сообщения
82
Репутация
3
madmasles
Согласен) извините, буду следить)
 
Верх