2017-01-18 3 views
0
Const ForReading = 1 
Const ForWriting = 2 
Set fso = CreateObject("Scripting.FileSystemObject") 
strSource = "C:\Users\Desktop\test.csv" 
Set File = fso.OpenTextFile(strSource, ForReading) 
strText = File.ReadAll 
File.Close 
strNewText = Replace(strText,",","|") 
Set File = fso.OpenTextFile(strSource, ForWriting, True) 
File.WriteLine strNewText 
File.Close 

Это код Im используя и результат я получаю: хххх | гггг | ZZZZZ ||||||||||||||||||||| Характер трубы '|' должен быть заменен на «null» или «если он повторяется более пяти раз, и я попытался использовать функции отделки, замены и mid, но не смог получить решение. СпасибоКак заменить, если символ повторяется больше, чем пороговое значение с нулевым или "" в vbs?

+0

Чтобы понять ваше основное требование: вы ожидаете фиксированное количество труб во всех линиях? Или будет ли замена, которую вы ищете, потенциально дает линии с большим количеством и с меньшим количеством труб? – trincot

+0

Каждая строка будет иметь трубы после каждой строки, но она не должна расширяться более чем в пять раз. –

ответ

0

Вы пытаетесь ограничить "|" до 5 последовательных записей? Там может быть симпатичнее способом, но это будет работать

Do While InStr(1, strNewText, "||||||") > 0 
    strNewText = Replace(strNewText, "||||||", "|||||") 
Loop 
+0

Спасибо за ответ, но я пытаюсь удалить трубы и заменить нулевым, если он превышает пять раз. –

+0

Do While InStr (1, strNewText, "| |||| ")> 0 strNewText = Replace (strNewText," ||||| "," ") Loop –

+0

Это сработало для меня, спасибо большое :) –

-1

Вы можете использовать следующие regular expression:

\|{5,} 

следующим образом:

Const ForReading = 1 
Const ForWriting = 2 
Set fso = CreateObject("Scripting.FileSystemObject") 
path = "C:\Users\Desktop\test.csv" 
Set file = fso.OpenTextFile(path, ForReading) 
strText = file.ReadAll 
file.Close 

Set re = CreateObject("VBScript.RegExp") 
re.Global = True 
re.Pattern = "\|{5,}" 
strNewText = re.Replace(strText, "") 

Set file = fso.OpenTextFile(strSource, ForWriting, True) 
file.WriteLine strNewText 
file.Close 

NB. Рассмотрите возможность использования Option Explicit в начале вашего скрипта; это избавит вас от ошибочных и запутанных переменных.