Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - ASP и VBScript

Страница: 1 |

 

  Вопрос: Помогите с преобразованием элементов массива Добавлено: 21.08.08 16:41  

Автор вопроса:  User
Всем привет! Прошу прощения за длинное сообщение но по другому не напишешь.
Имею большой текстовик несколько тысяч строк содержащий цифры в левой части каждой строки и текст в правой части каждой строки.
Проблема в том что в каждой строке нужно убрать пробелы в левой части у цифр не трогая ту часть строки где текст.
Решил реализовать это на VBScript так:
1.Код читает текстовик и собирает все строчки поэлементно в массив. Затем можно просмотреть каждую строку массива (т.е. моего текстовика)
Это у меня получилось (Код 1)
==============(Код 1)=================================
option Explicit
on Error Resume Next
dim arrTxtArray()
dim myfile
dim searchstring
dim objtextfile
dim strnextline
dim intsize
dim objfso
dim i
intSize = 0
myfile = "местонахождение моего файла"
searchstring = "буква или цифра для поиска"
const forreading = 1
set objfso = Createobject("scripting.filesystemobject")
set objtextfile = objfso.opentextfile(myfile, forreading)
do until objtextfile.atendofstream
strnextline = objtextfile.readline
if instr(strnextline, searchstring) then
redim preserve arrtxtarray(intsize)
arrtxtarray(intsize) = strnextline
intsize = intsize + 1
end if
loop
objtextfile.close
for i=lbound(arrtxtarray) to ubound(arrtxtarray)
wscript.echo arrtxtarray(i)
next
====================================================
2. Небольшая функция с использованием регулярных выражений находит в введенной в нее строке "str1" цифровую часть и убирает ненужные пробелы не трогая тектовую часть.
Это у меня тоже получилось (Код 2).
================(Код 2)================================
Function ReplaceTest(patrn, replStr)
  Dim regEx, str1 ' Create variables.
  str1 = именно сюда надо как то впихнуть элемент массива
  Set regEx = New RegExp
  regEx.Pattern = "\s\w"
  regEx.IgnoreCase = True
  regEx.Global = True
  ReplaceTest = regEx.Replace(str1, replStr)
  End Function
MsgBox(ReplaceTest(" ", ""))
====================================================
Только пункт второй у меня получается выполнить лишь для конкретной строки введеной в переменную "str1".
Вопрос 1:
Я не знаю как мне заставить мою функцию (Код 2) делать тоже самое не для конкретной строки, а для каждого прочитанного элемента массива полученного с помощью (Код 1)?
Вопрос 2:
Если решится вопрос 1, то как тогда сохранить полученный результат целиком в другом текстовике?
Помогите запутался окончательно.
Может есть более простой способ реализации этого безобразия?

Ответить

  Ответы Всего ответов: 2  

Номер ответа: 1
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #1 Добавлено: 21.08.08 22:36
1) в цикле
for i=lbound(arrtxtarray) to ubound(arrtxtarray)
//...
next
вызывай свою функцию..
т.е. вызывай её для каждого элемента массива.

2) Сохранять аналогично как ты и читал. Найди пример сохранения файла через FSO.

Ответить

Номер ответа: 2
Автор ответа:
 User



Вопросов: 8
Ответов: 7
 Профиль | | #2 Добавлено: 22.08.08 09:47
Спасибо за совет! Вызвать я ее вызову конечно. Но тогда что писать в str1 в коде 2? Элемент массива arrtxtarray(i)? Я так пробовал. Скрипт просто молчит ничего не делая. Но ведь если в str1 ничего не писать тогда получается моей функции нечего обрабатывать? Если же попытаться содержимое процедуры запихать внутрь цикла то тоже полная тишина скрипт просто запускается но ничего не выполняет. Если будут еще мнения буду очень признателен.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам