自从Ive分割字符串以来已经有一段时间了,但是我需要使用“ _”下划线作为分割字符串的标记来分割和重新排列文本。
例如:
TOM_here_was
然后将成为
here_was_TOM
如何在VB.net中做到这一点?
最佳答案
订购的规则是什么?
根据拆分,使用Split("_"c)
获得一个数组:
Dim tokens = "TOM_here_was".Split("_"c)
现在,您已经拥有了所有部分,例如,如果您想要一个随机订单(因为尚不清楚):
tokens = tokens.OrderBy(Function(s) Guid.NewGuid()).ToArray()
更新权限你的评论:
我有一个带有客户编号的文件名,然后是随后的编号
是开始日期,最后一个数字是结束日期。例如
1111_20140201_20140228。汤姆在这里可能不是一个好例子
Dim path = "C:\Temp\1111_20140201_20140228.txt"
Dim fileName = System.IO.Path.GetFileNameWithoutExtension(path)
Dim tokens = fileName.Split("_"c)
If tokens.Length = 3 Then
Dim client = tokens(0)
Dim startDate, endDate As Date
Dim parsableStart = Date.TryParseExact(tokens(1),
"yyyyMMdd",
Globalization.CultureInfo.InvariantCulture,
Globalization.DateTimeStyles.None,
startDate)
Dim parsableEnd = Date.TryParseExact(tokens(2),
"yyyyMMdd",
Globalization.CultureInfo.InvariantCulture,
Globalization.DateTimeStyles.None,
endDate)
If parsableStart AndAlso parsableEnd Then
Console.WriteLine("Client: {0} Start: {1} End: {2}", client, startDate, endDate)
End If
End If
如果要在目录中订购文件,可以使用LINQ:
Dim startDate, endDate As Date
Dim fileNames = System.IO.Directory.EnumerateFiles("C:\Temp\", "*.*", SearchOption.TopDirectoryOnly)
Dim orderedFilenames =
From path In fileNames
Let fileName = System.IO.Path.GetFileNameWithoutExtension(path)
Let tokens = fileName.Split("_"c)
Where tokens.Length = 3
Let client = tokens(0)
Let startDateParsable = Date.TryParseExact(tokens(1), "yyyyMMdd", Globalization.CultureInfo.InvariantCulture, Globalization.DateTimeStyles.None, startDate)
Let endDateparsable = Date.TryParseExact(tokens(2), "yyyyMMdd", Globalization.CultureInfo.InvariantCulture, Globalization.DateTimeStyles.None, endDate)
Where startDateParsable AndAlso endDateparsable
Order By startDate, endDate
Select New With { fileName, client, startDate, endDate }
For Each fn In orderedFilenames
Console.WriteLine("File: {0} Client: {1} Start: {2} End: {3}", fn.fileName, fn.client, fn.startDate, fn.endDate)
Next