我有问题从文本末尾找到第一个字符。 例如,在“父亲回家”中找到空格(“”)或新行(vbCrLf)我从末尾得到第一个空格的索引,并在“父亲回家/明天”我得到/n.的索引p>
我的代码:
Function checkTextFunction( i_valueCheck)
Dim whereSpace
Dim WhereNewLine
Dim indexOFirstSpaceFromTheEnd
If Right(i_valueCheck,1) = " " Or Right(i_valueCheck,1) = vbCrLf Then
indexOFirstSpaceFromTheEnd = -1
Else
whereSpace = InStrRev(i_valueCheck, " ", -1,0)
WhereNewLine = InStrRev(i_valueCheck, vbCrLf, -1,0)
If whereSpace < WhereNewLine Then
indexOFirstSpaceFromTheEnd = whereSpace
Else
indexOFirstSpaceFromTheEnd = WhereNewLine
End If
End IF
WriteLogFileLine "indexOFirstSpaceFromTheEnd: " & indexOFirstSpaceFromTheEnd & " Right(i_valueCheck,1): " & Right(i_valueCheck,1) & vbCrLf & vbCrLf
checkTextFunction = indexOFirstSpaceFromTheEnd
End Function
但我找不到第一次出现的行
whereSpace = InStrRev(i_valueCheck, " ", 1)
WhereNewLine = InStrRev(i_valueCheck, vbCrLf,1)
我总是0。
有人有想法吗?
*******我编辑我的问题!!!!。
谢谢,
塔尔
答案 0 :(得分:0)
Right(i_valueCheck, 2) = vbCrLf
InStrRev
将返回0 ..这意味着它始终是第一次出现。根据变量的值,第二个If
语句应该更加明确。indexOFirstSpaceFromTheEnd
...如果没有vbCrLf或“”字符,它将保持为空。因此,您应该添加一个检查,以便每次都返回一个值...无论字符串如何。我随意挑选了一百万。 Function checkTextFunction(ByRef i_valueCheck)
Dim whereSpace
Dim whereNewLine
Dim indexOFirstSpaceFromTheEnd
If Right(i_valueCheck,1) = " " Or Right(i_valueCheck,2) = vbCrLf Then
indexOFirstSpaceFromTheEnd = -1
Else
whereSpace = InStrRev(i_valueCheck, " ", -1, 0)
whereNewLine = InStrRev(i_valueCheck, vbCrLf, -1, 0)
If whereSpace > 0 And (whereSpace < whereNewLine Or whereNewLine = 0) Then
indexOFirstSpaceFromTheEnd = whereSpace
ElseIf whereNewLine > 0 And (whereNewLine < whereSpace Or whereSpace = 0) Then
indexOFirstSpaceFromTheEnd = whereNewLine
End If
End If
If indexOFirstSpaceFromTheEnd = vbEmpty Then indexOFirstSpaceFromTheEnd = 1000000
WriteLogFileLine "indexOFirstSpaceFromTheEnd: " & _
indexOFirstSpaceFromTheEnd & _
" Right(i_valueCheck,1): " & _
Right(i_valueCheck,1) & vbCrLf & vbCrLf
checkTextFunction = indexOFirstSpaceFromTheEnd
End Function
这应该可以帮助你开始...现实地 - 如果你想找到第一次出现的vbCrLf或“”那么你将不得不操作While
循环以便继续检查(与InStrRev
)索引实际上最后一次出现。
例如:使用上面的代码...查看checkTextFunction(Space(2) & "test")
答案 1 :(得分:0)
最后的答案:如果&#34; i_valueCheck&#34;不是空格或vbCrLf它从&#34; i_valueCheck&#34;的末尾找到第一个案例(空格或vbCrLf)。
Function checkTextFunction( i_valueCheck)
Dim whereSpace
Dim whereNewLine
Dim indexOFirstSpaceFromTheEnd
If Right(i_valueCheck,1) = " " Or Right(i_valueCheck,2) = vbCrLf Then
indexOFirstSpaceFromTheEnd = -1
Else
whereSpace = InStrRev(i_valueCheck, " ", -1, 0)
whereNewLine = InStrRev(i_valueCheck, vbCrLf, -1, 0)
If whereSpace > 0 And (whereSpace > whereNewLine Or whereNewLine = 0) Then
indexOFirstSpaceFromTheEnd = whereSpace
ElseIf whereNewLine > 0 And (whereNewLine > whereSpace Or whereSpace = 0) Then
indexOFirstSpaceFromTheEnd = whereNewLine
Else
indexOFirstSpaceFromTheEnd = -1
End If
End If
checkTextFunction = indexOFirstSpaceFromTheEnd End Function