Показать полную графическую версию : [решено] Как разбить одну строку на много строк
Доброго времени суток всем
Есть одна строка, в ней есть некоторые числа, которые разделены запятой или двоима или тремя запятыми.
Надо сделать так чтоб каждое число было в отдельной строке, которые есть с минусом что б были без минула, только числа, если можно, если нет, то пусть будут с минусами .
Пример
Было
11111111,2222222,,,444444,777,,555555,,-1,-1,-1
Стало
11111111
2222222
444444
777
555555
1
1
1
PS Z:\> "11111111,2222222,,,444444,777,,555555,,-1,-1,-1".split("-,",[StringSplitOptions]::RemoveEmptyEntries)
11111111
2222222
444444
777
555555
1
1
1
@Echo Off
Set line=11111111,2222222,,,444444,777,,555555,,-1,-1,-1
Set line=%line:-=%
For %%i In (%line:,= %) Do Echo %%i
Pause
До кучи ;):
Option Explicit
Dim strLine
Dim elem
strLine = "11111111,2222222,,,444444,777,,555555,,-1,-1,-1"
For Each elem In Split(strLine, ",")
If elem <> "" Then
WScript.Echo Abs(elem)
End If
Next
WScript.Quit 0
Спасибо всем за ответы.
Вот только я ничего не понял, как с каждым кодом работать.
Если вам не трудно можете объяснить для каждого кода что делать.
Для первого я создал батник запустил, а он мне создал пустой файл и именем всех чисел.
Для второго тоже батник создал здесь уже лучше, запустил он выбил все числа по строках в консоли, но скопировать я их от туда не могу.
Уже подумал третий поможет, создал vbs, при запуске выбивают окошка с теме всеми числами по очереди и надо нажать на ок, но ничего не происходит, кидал файл с текстом на него тот же результат.
KooDI, Вы ни чего в ТЗ не сказали о том:
- где находится эта строка (прописана в скрипте, в текстовом файле, или будет передаваться скрипту в виде параметра)
- если в файле, то сколько там таких строк (одна или много)
- куда нужно вывести результат (окно, файл)
- если строк не одна, то результаты должны быть выведены в один файл или для каждой строки создавать свой
- какие имена файлов должны быть в последнем случае
- где находится эта строка (прописана в скрипте, в текстовом файле, или будет передаваться скрипту в виде параметра) »
текстовом файле *.txt
- если в файле, то сколько там таких строк (одна или много) »
одна
- куда нужно вывести результат (окно, файл) »
если можно то в файл
@Echo Off
:: Файл со строкой 11111111,2222222,,,444444,777,,555555,,-1,-1,-1
Set list=e:\Temp\list.txt
:: Получаемый файл
Set OutFile=e:\Temp\OutFile.txt
For /F "tokens=* usebackq" %%i In ("%list%") Do Set line=%%i
Set line=%line:-=%
(For %%i In (%line:,= %) Do Echo %%i)>"%OutFile%"
gora, спасибо все робатае
Iska, пожалуйста можете написать скрип, что б просто перетаскиванием файла на скрипт создавался текстовый документ с результатом, просто хочу на кнопку повесить в тотале.
хочу на кнопку повесить в тотале »
Скрипт KooDI.bat:
@Echo Off
For /F "tokens=* usebackq" %%i In ("%~1") Do Set line=%%i
Set line=%line:-=%
(For %%i In (%line:,= %) Do Echo %%i)>"%~dpn1_New%~x1"Код кнопки на панели ТС:TOTALCMD#BAR#DATA
e:\Temp\KooDI.bat
%P%N
E:\totalcmd64\Wcmicons.dll,67
Строка в столбик
1
-1
Пути в коде кнопки исправьте на свои
Новый файл создается рядом с исходным. Его имя формируется из имени исходного файла добавлением суффикса _New
gora, огромное вам спасибо за код, и за кнопку, все работает но есть одно но, код с большими файлами не работает, он создает файл с черточкой "-", и все.
Думал сначала что в строке попался какой то символ, по пробовал взять приведенный мной пример строки , продублировав ее до 11844 символов в строке, и код тоже не работал.
код с большими файлами не работает »
Ограничение на длину значения переменной в CMD - 8кБ. Значит надо переходить на другой язык, например, на vbs.
На базе примера от Iska
Скрипт KooDI.vbs:
If WScript.Arguments.Count < 1 Then WScript.Quit
Set FSO = CreateObject("Scripting.FileSystemObject")
F = WScript.Arguments.Item(0)
Set rd_file = FSO.OpenTextFile(F, 1,, -2)
strLine = rd_file.ReadAll
rd_file.Close
Buffer = ""
For Each elem In Split(strLine, ",")
If elem <> "" Then Buffer = Buffer & Abs(elem) & Chr(13) & Chr(10)
Next
Set wr_file = FSO.OpenTextFile(FSO.GetParentFolderName(F) & "\" & FSO.GetBaseName(F) _
& "_New." & FSO.GetExtensionName(F), 2, True)
wr_file.Write Buffer
wr_file.Close
WScript.Quit Код кнопки на панели ТС:TOTALCMD#BAR#DATA
e:\Temp\KooDI.vbs
%P%N
%commander_path%\Wcmicons.dll,67
Строка в столбик
1
-1
gora, cпасибо вам огромное, за ваше время и труд
dizel-82
27-06-2013, 11:49
Люди подскажите новичку, вот вы тут выкладываете какието коды, а я не знаю как ими пользоватся.Куда их вставлять. Мне вот тоже нужно разделить строки. Есть база в (блокноте),там имейл адреса идут в строку,через запятую,ну гдето строк 20 примерно,мне нужно чтобы каждый адрес был в отдельной строке,тоесть в столбик. Спасибо.
dizel-82, Вам проще будет выложить этот файл, упакованный в архив, чтобы кто-нибудь сие Вам сделал.
kiripanda
27-06-2013, 21:05
dizel-82
в редакторе заменить , на перевод строки не устроит?
dizel-82
28-06-2013, 11:14
Да нет выслать не пойдет.Мне нужно самому это уметь делать.
kiripanda Я не понял, всмысле в редакторе заменить , на перевод строки ??
всмысле в редакторе заменить , на перевод строки ?? »
Да. Поиском-заменой.
dizel-82
28-06-2013, 11:24
что искать, и на что менять ??
что искать, »
Запятую.
на что менять ?? »
На символ конца строки. Конкретное обозначение зависит от использованного редактора.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.