Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Поместить строку в строку (http://forum.oszone.net/showthread.php?t=327639)

blackeangel 15-06-2017 22:27 2744975

Поместить строку в строку
 
Код:

/system:
drwxr-xr-x 0        0                2017-04-01 09:15 app
drwxr-xr-x 0        2000              2017-03-30 20:53 bin
-rw-r--r-- 0        0          10911 2017-04-11 18:53 build.prop
drwxr-xr-x 0        0                2017-04-01 09:14 data-app
drwxr-xr-x 0        0                2017-06-05 22:01 etc
drwxr-xr-x 0        0                2017-03-30 20:53 fonts
drwxr-xr-x 0        0                2017-04-17 20:39 framework
drwxr-xr-x 0        0                2017-03-30 20:53 lib
drwxr-xr-x 0        0                2017-03-30 20:53 lib64
drwxrwx--- 0        0                2017-03-30 20:52 lost+found
drwxr-xr-x 0        0                2017-03-31 05:58 media
drwxr-xr-x 0        0                2017-04-01 09:16 priv-app
drwxr-xr-x 0        0                2017-03-30 20:54 rfs
drwxr-xr-x 0        0                2017-03-30 20:54 spaces
drwxr-xr-x 0        0                2017-03-30 20:54 usr
drwxr-xr-x 0        2000              2017-03-30 20:54 vendor
drwxr-xr-x 0        2000              2017-03-30 20:54 xbin
/system/app:
drwxr-xr-x 0        0                2017-03-30 20:52 AnalyticsCore
drwxr-xr-x 0        0                2017-03-30 20:52 AntHalService
drwxr-xr-x 0        0                2017-03-30 20:52 AntiSpam
drwxr-xr-x 0        0                2017-03-30 20:52 AppIndexProvider
drwxr-xr-x 0        0                2017-03-30 20:52 ApplicationsProvider
drwxr-xr-x 0        0                2017-03-30 20:52 AutoTest
drwxr-xr-x 0        0                2017-03-30 20:52 Bluetooth

как сделать чтобы было вот так
Код:

drwxr-xr-x 0        0                2017-04-01 09:15 /system/app
drwxr-xr-x 0        2000              2017-03-30 20:53 /system/bin
-rw-r--r-- 0        0          10911 2017-04-11 18:53 /system/build.prop
drwxr-xr-x 0        0                2017-04-01 09:14 /system/data-app
drwxr-xr-x 0        0                2017-06-05 22:01 /system/etc
drwxr-xr-x 0        0                2017-03-30 20:53 /system/fonts
drwxr-xr-x 0        0                2017-04-17 20:39 /system/framework
drwxr-xr-x 0        0                2017-03-30 20:53 /system/lib
drwxr-xr-x 0        0                2017-03-30 20:53 /system/lib64
drwxrwx--- 0        0                2017-03-30 20:52 /system/lost+found
drwxr-xr-x 0        0                2017-03-31 05:58 /system/media
drwxr-xr-x 0        0                2017-04-01 09:16 /system/priv-app
drwxr-xr-x 0        0                2017-03-30 20:54 /system/rfs
drwxr-xr-x 0        0                2017-03-30 20:54 /system/spaces
drwxr-xr-x 0        0                2017-03-30 20:54 /system/usr
drwxr-xr-x 0        2000              2017-03-30 20:54 /system/vendor
drwxr-xr-x 0        2000              2017-03-30 20:54 /system/xbin
drwxr-xr-x 0        0                2017-03-30 20:52 /system/app/AnalyticsCore
drwxr-xr-x 0        0                2017-03-30 20:52 /system/app/AntHalService
drwxr-xr-x 0        0                2017-03-30 20:52 /system/app/AntiSpam
drwxr-xr-x 0        0                2017-03-30 20:52 /system/app/AppIndexProvider
drwxr-xr-x 0        0                2017-03-30 20:52 /system/app/ApplicationsProvider
drwxr-xr-x 0        0                2017-03-30 20:52 /system/app/AutoTest
drwxr-xr-x 0        0                2017-03-30 20:52 /system/app/Bluetooth


Iska 15-06-2017 22:48 2744980

blackeangel, если в способах использования регулярок на Java есть подобие метода/функции .Replace() — используйте этот способ. Регуляркой находите, например, дату-время, затем заменяете найденное на "$1добавленный текст", где $1 — ссылка на найденную группу.

blackeangel 15-06-2017 23:05 2744985

Цитата:

Цитата Iska (Сообщение 2744980)
blackeangel, если в способах использования регулярок на Java есть подобие метода/функции .Replace() — используйте этот способ. Регуляркой находите, например, дату-время, затем заменяете найденное на "$1добавленный текст", где $1 — ссылка на найденную группу.

Что то не шибко понял как это можно строку сверху прикрутить в текущую строку.

Iska 15-06-2017 23:52 2744995

blackeangel, я а) крайне далёк от Java, б) у меня к ней паталогическое неприятие, имеющее исторические корни. Посему максимум, что я могу — подсказать, как сие может выглядеть на vbscript:
Скрытый текст
Код:

Option Explicit

Dim objFSO
Dim objRegExp

Dim strSourceFile
Dim strDestFile

Dim arrContent
Dim strLine
Dim strPath


strSourceFile = "C:\Мои проекты\0087\Source.txt"
strDestFile  = "C:\Мои проекты\0087\Destination.txt"

Set objFSO    = WScript.CreateObject("Scripting.FileSystemObject")
Set objRegExp = WScript.CreateObject("VBScript.RegExp")

objRegExp.Pattern = "(\d{4}-\d{2}-\d{2} \d{2}:\d{2} )"

With objFSO.OpenTextFile(strSourceFile)
        arrContent = Split(.ReadAll(), vbCrLf)
        .Close
End With

With objFSO.CreateTextFile(strDestFile)
        For Each strLine In arrContent
                If Not objRegExp.Test(strLine) Then
                        strPath = Left(strLine, Len(strLine) - 1)
                        WScript.Echo strPath
                Else
                        .WriteLine objRegExp.Replace(strLine, "$1" & strPath & "/")
                End If
        Next
       
        .Close
End With

Set objRegExp = Nothing
Set objFSO    = Nothing

WScript.Quit 0


Вкратце:
  • читаем содержимое, разбиваем на строки, помещаем в массив;
  • перебираем массив, сравнивая каждую строку из него с шаблоном даты+пробел;
  • если не совпало — используем эту строку в дальнейшем как путь, обрезав из неё последний сивол («:»);
  • если совпало — делаем замену, вставляя в строку вместо найденной даты+пробела ту же самую дату+пробел («$1») плюс путь плюс символ разделителя пути «/» и пишем полученную в результате замены строку в файл.
Если концы строк в файлах в стиле Unix — только LineFeed — тогда понадобится слегка подкорректировать код.

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

greg zakharov 16-06-2017 11:48 2745118

Цитата:

Цитата Iska
Посему максимум, что я могу — подсказать, как сие может выглядеть на vbscript

Если Вы не обратили внимание, предоставленные автором темы примеры очень смахиват на вывод UNIX'овой команды ls. Если предположить, что это оно и есть, то куда проще сделать нечто вроде:
Код:

ls -ld $(find . -type f)
Чтобы исключить имя пользователя из вывода, можно воспользоваться sed:
Код:

ls -ld $(find . -type f) | sed -e 's/User//g'
По аналогии sed'ом можно убрать и прочие артефакты.
Хотя, если следовать логике, "жаба" здесь используется для программирования какого-то [з]A[n]droid устройства, так что там скорее можно все проще сделать - была б известна конечная цель.

Iska 16-06-2017 13:08 2745143

Цитата:

Цитата greg zakharov
Если Вы не обратили внимание… »

Не обратил, ибо не пользую. Если оно так — само собой имеет смысл зараз получать потребное содержимое.

Цитата:

Цитата greg zakharov
была б известна конечная цель. »

Я как-то у автора спрашивал, а он отвечал, было дело, ещё во времена VB6-подхода, с год-полтора назад вроде как.

Цитата:

Цитата greg zakharov
для программирования какого-то [з]A[n]droid устройства »

Помнится, так оно и было.


Время: 21:05.

Время: 21:05.
© OSzone.net 2001-