Vbscript: преобразовать текстовую строку в маленькие кусочки и поместить в массив - PullRequest
0 голосов
/ 31 августа 2011

Мне нужно разбить длинную текстовую строку на более мелкие части примерно один раз каждые 500 символов (не специальный символ), сформировать массив всех предложений и затем сложить их вместе, разделив определенным символом (например, / /). Что-то следующее:

"Этот текст очень очень большой."

Итак, я получаю:

arrTxt(0) = "This is"
arrTxt(1) = "a very"
arrTxt(2) = "very large text"
...

И наконец:

response.write arrTxt(0) & "//" & arrTxt(1) & "//" & arrTxt(2)...

Из-за моего ограниченного знания классического осина, наиболее близким я достиг желаемого результата:

length = 200
strText = "This text is a very very large."
lines = ((Len (input) / length) - 1)
For i = 0 To (Len (lines) - 1)
txt = Left (input, (i * length)) & "/ /"
response.write txt
Next

Однако, это возвращает повторяющуюся и перекрывающуюся текстовую строку: «это / / это / / это текст //...

Есть идеи с vbscript? Спасибо!

Ответы [ 2 ]

2 голосов
/ 01 сентября 2011

Без использования массива вы можете просто построить строку по ходу движения

Const LIMIT = 500
Const DELIMITER = "//"
' your input string - String() creates a new string by repeating the second parameter by the given
' number of times
dim INSTRING: INSTRING = String(500, "a") & String(500, "b") & String(500, "c")


dim current: current = Empty
dim rmainder: rmainder = INSTRING 
dim output: output = Empty
' loop while there's still a remaining string
do while len(rmainder) <> 0
    ' get the next 500 characters
    current = left(rmainder, LIMIT)
    ' remove this 500 characters from the remainder, creating a new remainder
    rmainder = right(rmainder, len(rmainder) - len(current))
    ' build the output string
    output  = output  & current & DELIMITER
loop
' remove the lastmost delimiter
output = left(output, len(output) - len(DELIMITER))
' output to page
Response.Write output

Если вам действительно нужен массив, тогда вы можете split(output, DELIMITER)

1 голос
/ 31 августа 2011

Вот попытка:

Dim strText as String
Dim strTemp as String
Dim arrText()
Dim iSize as Integer
Dim i as Integer

strText = "This text is a very very large."
iSize = Len(stText) / 500
ReDim arrText(iSize)
strTemp = strText

For i from 0 to iSize - 1
  arrText(i) = Left(strTemp, 500)
  strTemp = Mid(strTemp, 501)
Next i

WScript.Echo Join(strTemp, "//")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...