Datum aus String entfernen

  • VB.NET
  • .NET (FX) 4.0

Es gibt 21 Antworten in diesem Thema. Der letzte Beitrag () ist von φConst.

    Hier,



    Pattern-Klasse:

    C#-Quellcode

    1. public class Pattern
    2. {
    3. public Dictionary<int, char[]> PatternDictionary = new Dictionary<int, char[]>();
    4. public void Add(int index, params char[] input)
    5. {
    6. PatternDictionary.Add(index, input);
    7. }
    8. public bool IsMatching(string data)
    9. {
    10. char[] _array = data.ToCharArray();
    11. int matches = 0;
    12. for (int i = 0; i < _array.Length; i++)
    13. {
    14. int offset = i;
    15. foreach (var pattern in PatternDictionary)
    16. {
    17. int index = pattern.Key + offset;
    18. char[] toCheckAgainst = pattern.Value;
    19. if (index >= _array.Length)
    20. continue;
    21. for (int j = 0; j < toCheckAgainst.Length; j++)
    22. {
    23. if (toCheckAgainst[j] == _array[index])
    24. {
    25. matches++;
    26. break;
    27. }
    28. }
    29. }
    30. if (matches == PatternDictionary.Count)
    31. return true;
    32. matches = 0;
    33. }
    34. return false;
    35. }
    36. }


    Das gibt erst mal nur wieder ob das Muster darin existiert.
    Um exemplarisch Datum zu entfernen, einfach den Index i abgreifen, wo matcher == count und davon von i bis i + Count den String abschneiden (Truncate) ...

    Aufruf:

    C#-Quellcode

    1. Pattern p1 = new Pattern();
    2. p1.Add(0, '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'); // 2
    3. p1.Add(1, '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'); // 0
    4. p1.Add(2, '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'); // 1
    5. p1.Add(3, '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'); // 7
    6. p1.Add(4, '-'); // -
    7. p1.Add(5, '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'); // 0
    8. p1.Add(6, '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'); // 8
    9. p1.Add(7, '-'); // -
    10. p1.Add(8, '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'); // 2
    11. p1.Add(9, '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'); // 4
    12. Console.WriteLine("Does 249-Zertifikat4_[...]-Ichtershausen_42_2017-08-24.pdf contain a date?: " + (p1.IsMatching("249-Zertifikat4_Hoermann-Ichtershausen_42_2017-08-24.pdf") ? "Yes" : "No"));
    13. Console.Read();


    Das ist jetzt am Beispiel eines Pattern... kannst beliebig weitere hinzufügen.
    Exemplarisch:

    C#-Quellcode

    1. class Program
    2. {
    3. static void Main(string[] args)
    4. {
    5. Pattern p1 = new Pattern();
    6. p1.Add(0, '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'); // 2
    7. p1.Add(1, '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'); // 0
    8. p1.Add(2, '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'); // 1
    9. p1.Add(3, '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'); // 7
    10. p1.Add(4, '-'); // -
    11. p1.Add(5, '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'); // 0
    12. p1.Add(6, '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'); // 8
    13. p1.Add(7, '-'); // -
    14. p1.Add(8, '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'); // 2
    15. p1.Add(9, '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'); // 4
    16. Console.WriteLine("Does 249-Zertifikat4_[...]-Ichtershausen_42_2017-08-24.pdf contain a date?: " + (p1.IsMatching("249-Zertifikat4_Hoermann-Ichtershausen_42_2017-08-24.pdf") ? "Yes" : "No"));
    17. Pattern p2 = new Pattern();
    18. p2.Add(0, '0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
    19. p2.Add(1, '.');
    20. p2.Add(2, '0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
    21. p2.Add(3, '0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
    22. p2.Add(4, '-');
    23. p2.Add(5, '0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
    24. p2.Add(6, '0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
    25. p2.Add(7, '0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
    26. p2.Add(8, '0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
    27. // H_16_S-1_Z-6.20-2025_A.PDF
    28. Console.WriteLine("Does H_16_S-1_Z-6.20-2025_A.PDF contain a date?: " + (p2.IsMatching("H_16_S-1_Z-6.20-2025_A.PDF") ? "Yes" : "No"));
    29. Console.Read();
    30. }
    31. }


    Liebe Grüße

    _
    Und Gott alleine weiß alles am allerbesten und besser.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „φConst“ ()

    Leute, ist ein OffT aber: Mir fällt auf das der Fragesteller seit mehreren Stunden online ist und sogar meiner Einschätzung nach im selben Thread ( das seit gestern).

    Auch hat er nicht auf die Nachricht die ich ihm sandte bezüglich der extrahierten Daten aus dem String zugegriffen.

    Lange Rede kurzer Sinn: Bug oder ist dem - Gott bewahre- was zugestoßen?
    Und Gott alleine weiß alles am allerbesten und besser.