Daty w stringach - jak dodać spacje po dniu i przed rokiem?

0

Mam takie przykładowe stringi w C#:

"12maj2015"
"2wrzesień1999"

jak dodać spacje po dniu (jedna lub dwie cyfry) i przed rokiem, tak, żeby powstały np. takie stringi:

"12 maj 2015"
"2 wrzesień 1999"
0

Nigdy nie pisałem w C#, ale najłatwiej to będzie tą datę rozbić na jakąś np. tablicę i potem ładować pojedynczo znaki do stringa, a przed pierwszym wystąpieniem litery dodać spację i po ostatnim wystąpieniu litery.

2

Bez przesady - można to zrobić o wiele prościej. To gdzie ma być wstawiony znak jest praktycznie z góry wiadome - wystarczy znać długość łańcucha, co wielkim problemem nie jest.

Jeśli rok zapisany jest zawsze w postaci czterocyfrowej (a na to właśnie wygląda) to biały znak należy wstawić przed czwartym znakiem od końca. Z numerem dnia nie jest to z góry określone, bo może to być liczba jedno- lub dwucyfrowa. Aby określić indeks dla białego znaku, który ma się znaleźć po numerze dnia, wystarczy sprawdzić, czy drugi znak w łańcuchu to cyfra. Jeśli tak jest to należy wstawić biały znak po drugim znaku, a jeśli nie to po pierwszym.

string DateValue = "2wrzesień1999";
		
DateValue = DateValue.Insert(DateValue.Length - 4, " ");
DateValue = DateValue.Insert(Char.IsDigit(DateValue, 1) ? 2 : 1, " ");

http://ideone.com/9ikVje

1

@furious programming: sposób jest w sumie ok ale należałoby sprawdzić czy podany string rzeczywiście jest prawidłową datą. Dodatkowo .net dostarcza w metodzie ToString() dla DateTime możliwość wprowadzenia formatu daty:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace App
{
    class Program
    {
        static void Main(string[] args)
        {
            var dates = new List<string> { "2wrzesień1999", "12maj2015" };
            foreach (var d in dates)
            {
                DateTime date;
                if (DateTime.TryParse(d, out date))
                    Console.WriteLine(date.ToString("dd MMMM yyyy"));
            }

        }
    }
}

https://msdn.microsoft.com/pl-pl/library/zdtaw1bw(v=vs.110).aspx

1

sposób jest w sumie ok ale należałoby sprawdzić czy podany string rzeczywiście jest prawidłową datą.

Mój przykład zawiera jedynie odpowiedź na podstawowe pytanie, czyli jak dodać białe znaki do ciągu z datą. Walidacja powinna być wykonywana gdzieś wcześniej (o ile w ogóle jest potrzebna).

Dodatkowo .net dostarcza w metodzie ToString() dla DateTime możliwość wprowadzenia formatu daty: [...]

To już poza konkursem - nie wiemy skąd pochodzą te ciągi. Ale całkiem możliwe, że są one po prostu źle generowane.

1 użytkowników online, w tym zalogowanych: 0, gości: 1