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"
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"
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.
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, " ");
@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
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()
dlaDateTime
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.