2015-09-05 3 views
1

Я пытаюсь прочитать строковый символ char и определить, есть ли новая строка, и создать вывод, если это так.Как обнаружить новую строку?

strText = "A;B;C" & vbcrlf & "D;E;F" 
wscript.echo strText 

For i=1 To Len(strText) 

    charx = Mid(strText,i,1) 

    if charx = "\n" then 
     wscript.echo "OMG, NEW LINE DETECTED!!!" 
    end if 
Next 

Я попробовал его, сравнивая прочтенный полукокс с "\n", но это не удалось.

ответ

2
if charx = vbLf then 
    wscript.echo "OMG, NEW LINE DETECTED!!!" 
end if 

В VBScript "\n" это строка с двумя символами, не новая строка символов

+0

Спасибо, это сработало. Я также пробовал это с помощью 'vbCrLf' раньше, но это не удавалось. – Black

+2

@EdwardBlack, он не работал с 'vbCrLf', потому что эта константа представляет собой строку с двумя символами, возврат каретки, за которой следует строка строки, но вы повторяете строку, извлекающую один символ за раз, и одна строка символов не может быть равно двум символам. –

+1

@EdwardBlack http://stackoverflow.com/a/27223391/3682599 может быть вам полезна! –

-1

Простой способ определить новую строку используется Environment.NewLine

+0

Я попробовал 'if charx = Environment.NewLine then', но я получаю сообщение об ошибке. – Black

2

Использование InStr функции следующим образом:

option explicit 
'On Error Resume Next 
On Error GoTo 0 
Dim strText, strResult 
strResult = Wscript.ScriptName 
strText = "A;B;C" & vbcrlf & "D;E;F;vbCrLf" 
strResult = strResult & vbNewLine & String(20, "-") & vbNewLine & testCrLf(strText) & strText 
strText = "A;B;C" & vbNewLine & "D;E;F;vbNewLine" 
strResult = strResult & vbNewLine & String(20, "-") & vbNewLine & testCrLf(strText) & strText 
strText = "A;B;C" & vbCr & "D;E;F;vbCr" 
strResult = strResult & vbNewLine & String(20, "-") & vbNewLine & testCrLf(strText) & strText 
strText = "A;B;C" & vbLf & "D;E;F;vbLf" 
strResult = strResult & vbNewLine & String(20, "-") & vbNewLine & testCrLf(strText) & strText 

Wscript.Echo strResult 
Wscript.Quit 

Function testCrLf(sText) 
    If InStr(1, sText, vbCrLf, vbBinaryCompare) Then 
    testCrLf = "CrLf detected in " 
    Else 
    testCrLf = "CrLf not found in " 
    End If 
End Function 

Выход:

==>cscript D:\VB_scripts\SO\32411401.vbs 
32411401.vbs 
-------------------- 
CrLf detected in A;B;C 
D;E;F;vbCrLf 
-------------------- 
CrLf detected in A;B;C 
D;E;F;vbNewLine 
-------------------- 
D;E;F;vbCround in A;B;C 
-------------------- 
CrLf not found in A;B;C 
D;E;F;vbLf 

==>