2015-01-24 2 views
-4

EDITED: (извините за нечеткие дилеммы я написал)как разделить имя строки в vb.net

я быть_наст изменить имя в «2015-02-12a00.12.20a67» и пожалуйста «имя «У меня есть всего лишь образец имени файла, который я буду читать из папки. и единственным требованием, которое у меня есть, является выход. Я хочу, чтобы имя файла разделилось на три (дата, время и скорость), чтобы я мог хранить их в БД.

str1 = 2015-02-12 
str2 = 00:12:20 
str3 = 67 

как я могу это сделать в vb.net? Я нашел этот код

Dim TestString As String = "apple pear banana " 
Dim TestArray() As String = Split(TestString) 
Dim LastNonEmpty As Integer = -1 

For i As Integer = 0 To TestArray.Length - 1 
    If TestArray(i) <> "" Then 
     LastNonEmpty += 1 
     TestArray(LastNonEmpty) = TestArray(i) 
    End If 
Next 

но это не для моих нужд/потребностей. кто-то пожалуйста, помогите мне ..

+0

Когда ты say 'str1 = 2015-02-12' Вы действительно имеете в виду' str1 = 2015-02-14'? –

+1

Код, который вы нашли, не имеет особого отношения к вашей проблеме. Кроме того, ваша проблема неясно - всегда ли строка в этом точном формате? В этом случае ['String.Substring'] (https://msdn.microsoft.com/en-us/library/aka44szs%28v=vs.110%29.aspx) может быть всем, что вам нужно. Если часть 'image' является переменной, вам может понадобиться что-то еще. – Mark

+0

[Вот] (https://dotnetfiddle.net/BAwrUv) пример, я не удаляю «изображение», я оставлю это вам. – Tuco

ответ

-2

основе:

.NET 4.5

VB.NET программа, которая использует Split

Module Module1 

Sub Main() 
' We want to split this input string 
Dim s As String = "2015-02-12a00.12.20a67" 

' Split string based on spaces 
Dim words As String() = s.Split(New Char() {"a"c}) 

' Use For Each loop over words and display them 
Dim word As String 
For Each word In words 
    Console.WriteLine(word) 
Next 
End Sub 

End Module 

Выход

2015-02-12 
00.12.20 
67 

я думаю, что это может помочь вам. здесь ссылка http://www.dotnetperls.com/split-vbnet

+3

Это совершенно неправильно. –

+1

как ?? split - самая распространенная функция, вам нужно передать разделительный символ, здесь я пропустил пустое пространство в качестве разделительного символа –

+0

http: //www.dotnetperls.com/split-vbnet попробуйте эту ссылку, возможно, получите больше идей –

1

Я думаю, что это то, что вы ищете:

Dim input = "image2015021400122067" 
Const Prefix = "image" 
Const YearLength = 4 
Const NonYearDateTimeFieldLengths = 2 
Dim year = input.Substring(Prefix.Length, YearLength) 
Dim month = input.Substring(Prefix.Length + YearLength, NonYearDateTimeFieldLengths) 
Dim day = input.Substring(Prefix.Length + YearLength + NonYearDateTimeFieldLengths, NonYearDateTimeFieldLengths) 
Const DateSeparator = "-"c 
Dim str1 = String.Join(DateSeparator, {year, month, day}) 
Dim hours = input.Substring(CInt(Prefix.Length + YearLength + NonYearDateTimeFieldLengths * 2), NonYearDateTimeFieldLengths) 
Dim minutes = input.Substring(CInt(Prefix.Length + YearLength + NonYearDateTimeFieldLengths * 3), NonYearDateTimeFieldLengths) 
Dim seconds = input.Substring(CInt(Prefix.Length + YearLength + NonYearDateTimeFieldLengths * 4), NonYearDateTimeFieldLengths) 
Const TimeSeparator = ":"c 
Dim str2 = String.Join(TimeSeparator, {hours, minutes, seconds}) 
Dim str3 = input.Substring(CInt(Prefix.Length + YearLength + NonYearDateTimeFieldLengths * 5), NonYearDateTimeFieldLengths) 

Пожалуйста, обратите внимание, что этот код делает несколько предположений:

  1. Ваша строка всегда начинается с image,
  2. Поля всегда будут одинаковыми «ширинами», то есть годами всегда будет 4 символа (duh!), А остальные поля даты/времени будут иметь 2 символа, с нулевым запасом если необходимо, так же, как и ваша введенная строка ввода.
1

Вы можете играть с DateTime.ParseExact и формат строки

Dim datex = "Image2015021400122067" 

    Dim dt = DateTime.ParseExact(datex, "'Image'yyyyMMddhhmmssff", Nothing) 

    Dim s1 = dt.ToString("yyyy-MM-dd") 

    Dim s2 = dt.ToString("HH:mm:ss") 

    Dim s3 = dt.ToString("ff") 

Нет необходимости использовать подстроку, «Image» игнорируется в шаблоне формата Вы можете проверить его здесь https://dotnetfiddle.net/BAwrUv

+0

Я отредактировал свой вопрос @jat .. hmm, а также формат имени файла .. :( – tris

+0

Я еще не разрешил этот пока .. пожалуйста, помогите – tris

Смежные вопросы