我成功使用此代码从我正在寻找的行中获取文本:
Dim lines = all_prices.Split({vbCrLf}, StringSplitOptions.None)
Dim match = lines.FirstOrDefault(Function(x) x.EndsWith("1820160831"))
示例数据是:
10|100|1820160830
20|200|1820160831
30|300|1820160901
目前的结果是:
20|200|1820160831
我想要的是追加找到它所在行的行号,例如:
20|200|1820160831-2
修改
我尝试了这个解决方案:
indexOfText = Array.FindIndex(lines, Function(str) str.IndexOf("1820160831", StringComparison.InvariantCultureIgnoreCase) >= 0)
但结果总是-1
答案 0 :(得分:2)
尝试一下,返回第一个匹配的索引,并将索引附加到字符串...
Dim all_prices As String = "10|100|1820160830" & vbCrLf & "20|200|1820160831" & vbCrLf & "30|300|1820160901"
Dim lines() As String = all_prices.Split(New String() {Environment.NewLine}, StringSplitOptions.None)
Dim i As Integer = Enumerable.Range(0, lines.Count).Where(Function(x) lines(x).EndsWith("1820160831")).First
lines(i) = lines(i) & "-" & i.ToString
"第(i + 1)的ToString"在最后一行而不是"我"如果你想要行号而不是索引
答案 1 :(得分:2)
Dim lines = all_prices.Split({vbCrLf}, StringSplitOptions.None)
Dim match = lines.FirstOrDefault(Function(x) x.EndsWith("1820160831"))
For i As Integer = 0 To lines.GetUpperBound(0)
Dim matches As Boolean = lines(i).EndsWith("1820160831")
If matches Then
match += "-" & (i + 1)
Exit For
End If
Next
答案 2 :(得分:1)
首先,我会通过获取它返回的总行数来检查你的Split()函数是否正常工作:
//func from extension
let newSize = mainImage.frameForImageInImageViewAspectFit()
let newHeight = CGRectGetHeight(newSize)
let newWidth = CGRectGetWidth(newSize)
mainImage.frame.size.height = newHeight
mainImage.frame.size.width = newWidth
我认为它不起作用,因为这不是使用换行符使用Split的正确方法。试试这个:
MsgBox(lines.Length)
这应该会为您提供搜索所需的数组。
<强> 修改 强>
要获取行号,您可以尝试:
Dim lines As String() = all_prices.Split(new String() {Environment.NewLine},
StringSplitOptions.None)