Автор Тема: Удалить текст после последнего пробела  (Прочитано 370 раз)

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

Оффлайн hedji [?]

  • Продвинутый
  • ***
  • Сообщений: 356
  • Репутация: 65
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Вариант снизу вверх до первой пустой строки снизу:
Код: AutoIt [Выделить]
$sFilePath = @ScriptDir & "\test1.txt"
$arr1=FileReadToArray($sFilePath)
$end=0

For $i=UBound($arr1)-1 To 0 Step -1
    If StringLen($arr1[$i])=0 Then
        $end=$i
        ExitLoop
    EndIf
Next

For $i=0 To $end
    FileWriteLine(@ScriptDir & "\test2.txt", $arr1[$i])
Next

FileMove(@ScriptDir & "\test2.txt", $sFilePath, 1)
 


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

Re: Удалить текст после последнего пробела
« Ответ #15 Отправлен: Март 15, 2019, 16:25:45 »

Оффлайн Huge_it [?]

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

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Huge_it  [?]
Цитировать
в файле остается весь текст
Ну, естественно. Вы же просили: "Нужно удалить только текст". Про перезапись файла речи не было ;)

InnI, я тут состряпал такое -
Код: AutoIt [Выделить]
    $hFile  = fileopen("C:\Users\admin\Desktop\samplefile.txt")
$Text    = FileRead($hFile)

FileClose($hFile)

$Text = FileRead("C:\Users\admin\Desktop\samplefile.txt")
If @error Then Exit MsgBox(0, "Error", "?????? ?????? ?????")
$Text = StringLeft($Text, StringInStr($Text, @CRLF & @CRLF, 0, -1) - 1)
MsgBox(0, "Text", $Text)


$hFile  = fileopen("C:\Users\admin\Desktop\samplefile.txt", 2)
FileWrite ($hFile, $Text)
FileClose($hFile)


вставил ваш regexp и вроде работает! Вместо диска С: задал рабочий стол во избежание...
Пока потестирую, и если всё нормально, то завтра помечу тему как решенную. И посмотрю еще решение от hedji. До завтра.
« Последнее редактирование: Март 15, 2019, 17:21:49 от Huge_it »

Оффлайн Huge_it [?]

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

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Вариант снизу вверх до первой пустой строки снизу:
Код: AutoIt [Выделить]
$sFilePath = @ScriptDir & "\test1.txt"
$arr1=FileReadToArray($sFilePath)
$end=0

For $i=UBound($arr1)-1 To 0 Step -1
    If StringLen($arr1[$i])=0 Then
        $end=$i
        ExitLoop
    EndIf
Next

For $i=0 To $end
    FileWriteLine(@ScriptDir & "\test2.txt", $arr1[$i])
Next

FileMove(@ScriptDir & "\test2.txt", $sFilePath, 1)
 


hedji, получается какая-то путаница  в файле. Вообще, я полный нуб, так что прошу давать полный и проверенный скрипт. Вариант от InnI у меня таки заработал, хотя пришлось попотеть.

Я прогнал следующий файл:
Цитировать
Бренд:   Nomura
Модель:   Baby Popper

Форма:   popper
Частота колебаний:   низкочастотный

Размеры и вес
Длина:   60 мм
Вес:   8 г

Дополнительная информация
Плавучесть:   плавающий
Особенность:   шумовая камера
Техника ловли:   Stop&Go, равномерная проводка, твичинг
Специализация:   щука, окунь
Расцветка:   естественная
Цвет:   желтый

Страна-производитель:   Япония
33333333333333333
5555555555555555
66666666666666666666666
463545643676766
6784897969
8888888888888
8888888888888888

и получил результат :

Цитировать
Бренд:   Nomura
Модель:   Baby Popper

Форма:   popper
Частота колебаний:   низкочастотный

Размеры и вес
Длина:   60 мм
Вес:   8 г

Дополнительная информация
Плавучесть:   плавающий
Особенность:   шумовая камера
Техника ловли:   Stop&Go, равномерная проводка, твичинг
Специализация:   щука, окунь
Расцветка:   естественная
Цвет:   желтый

Страна-производитель:   Япония
33333333333333333
5555555555555555
66666666666666666666666
463545643676766
6784897969
8888888888888
8888888888888888Бренд:   Nomura
Модель:   Baby Popper

Форма:   popper
Частота колебаний:   низкочастотный

Размеры и вес
Длина:   60 мм
Вес:   8 г

Дополнительная информация
Плавучесть:   плавающий
Особенность:   шумовая камера
Техника ловли:   Stop&Go, равномерная проводка, твичинг
Специализация:   щука, окунь
Расцветка:   естественная
Цвет:   желтый


Так что лишнее действительно вырезается, но оригинальный текст таки остался в начале.
В общем, близко, только надо убрать оригинал, а то он так и остался.
« Последнее редактирование: Март 15, 2019, 18:35:18 от Huge_it »

Оффлайн hedji [?]

  • Продвинутый
  • ***
  • Сообщений: 356
  • Репутация: 65
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Такой вариант проверьте, исправленный текст сохранится в файл test2.txt, если сработает, будем думать почему оригинал не перезаписался (на моем ПК перезаписывает).
Код: AutoIt [Выделить]
$sFilePath = @ScriptDir & "\test1.txt"
$arr1=FileReadToArray($sFilePath)
$end=0

For $i=UBound($arr1)-1 To 0 Step -1
    If StringLen($arr1[$i])=0 Then
        $end=$i
        ExitLoop
    EndIf
Next

For $i=0 To $end
    FileWriteLine(@ScriptDir & "\test2.txt", $arr1[$i])
Next
 


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

Re: Удалить текст после последнего пробела
« Ответ #18 Отправлен: Март 15, 2019, 21:16:33 »

Оффлайн Huge_it [?]

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

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
hedji, вроде работает, но очень медленно, хвост из 27 строк удалял секунд 15. Странно. Правда файл был 400 кв.
Да, счас посмотрел, test2.txt получился в 2 раза больше чем test1.txt .  Пардон, ошибся. Примерно одинаковый размер.

Прошу иметь в виду, мой файл-пример это просто пример, не более. Смысл в том, чтобы найти и удалить последний параграф, какого размера и вида, не важно.


Добавлено: Март 16, 2019, 15:46:49
Huge_it  [?]
Цитировать
скрипт для файла C:\samplefile.txt
Код: AutoIt [Выделить]
$Text = FileRead("C:\samplefile.txt")
If @error Then Exit MsgBox(0, "Error", "Ошибка чтения файла")
$Text = StringLeft($Text, StringInStr($Text, @CRLF & @CRLF, 0, -1) - 1)
MsgBox(0, "Text", $Text)


Работает отлично. Большое спасибо!
« Последнее редактирование: Март 16, 2019, 15:46:49 от Huge_it, Причина: Объединение сообщений »

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

Re: Удалить текст после последнего пробела
« Ответ #19 Отправлен: Март 15, 2019, 21:53:18 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
5 Ответов
7009 Просмотров
Последний ответ Апрель 06, 2010, 11:56:19
от CreatoR
5 Ответов
4271 Просмотров
Последний ответ Июль 23, 2013, 03:57:13
от AZJIO
2 Ответов
2255 Просмотров
Последний ответ Июль 23, 2013, 22:03:33
от Alecsis1
0 Ответов
1422 Просмотров
Последний ответ Апрель 25, 2014, 09:04:34
от madmasles
8 Ответов
1105 Просмотров
Последний ответ Ноябрь 22, 2017, 15:49:31
от Oleg-lamer
4 Ответов
744 Просмотров
Последний ответ Декабрь 14, 2017, 12:24:48
от serg41
2 Ответов
387 Просмотров
Последний ответ Март 15, 2018, 19:50:07
от slowhd
11 Ответов
741 Просмотров
Последний ответ Апрель 01, 2018, 14:58:56
от Tempo
1 Ответов
251 Просмотров
Последний ответ Июль 22, 2018, 13:45:45
от sngr
4 Ответов
562 Просмотров
Последний ответ Январь 09, 2019, 16:32:08
от Cytrus