自从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

09-10 09:23
查看更多