Witam
Moim zdaniem jest stworzenie programu, który będzie wczytywał plik tekstowy i jeśli napotka tekst pomiędzy słowami <usun>jakis tekst</usun> ma usunąć tekst z pliku i wyrzucić ten usunięty tekst to jakiego textVBoxa. Próbuje zmierzyć się z tym programem już parę dni i nic mi nie wychodzi. Próbowałem nawet używać wyrażeń regularny ale nie wychodzi mi to. Czy ktoś mógłby mi podpowiedzieć jak rozwiązać ten problem?
0
0
String inputString = ""; //wczytujesz zawartosc txt do stringa
String startPatern = ""; //np. <usun>
String stopPatern = ""; //np. </usun>
String reszta = "";
int posStart = 0;
int posStop = 0;
System.Text.RegularExpressions.Regex r1 = new System.Text.RegularExpressions.Regex(startPatern);
System.Text.RegularExpressions.Regex r2 = new System.Text.RegularExpressions.Regex(stopPatern);
foreach(System.Text.RegularExpressions.Match m1 in r1.Matches(inputString)){
System.Text.RegularExpressions.Match m2 = r2.Match(inputString, m1.Index);
String outputString = inputString.Substring(m1.Index+startPatern.Length, m2.Index-m1.Index);
// nie jestem pewien, czy nie będziesz musiał dodać albo odjąć gdzieś jedną literę w linijce wyżej
// najlepiej dodaj też jakiesz zabezpieczenia, bo jak nie znajdzie znacznika zamykającego to najpewniej się wywali
// w outputString masz swoj fragment
posStop = m1.Index;
reszta += inputString.Substring(posStart, posStop-posStart); //tak jak wyżej może być potrzeba dodania albo odjęcia 1 znaku
posStart = m2.Index+ stopPatern.Length;
// program nie poradzi sobie z zagnieżdżonymi oraz przeplatającymi się znacznikami, ale to już sobie sam dopracuj.
// zalecam też jakąś optymalizację, bo ten program napisałem na szybko i nawet nie zdążyłem przetestować.
//Najlepiej zacznij od stringbuildera a potem sam zobacz co jeszcze
}
//na koniec zapisujesz zawartość zmiennej reszta do pliku.
0
No i tradycyjnie. Męczyłem się parę dni z tym problemem. Kombinowałem jak najęty:P. Napisałem posta na forum i niedługo po tym znalazłem rozwiązanie, które okazało się tak banale, że aż wstyd:). Oto one:
String txt = "Jan kowalski<usun>jest dupkiem</usun> duzo potrafi"
int indeksStart = txt.IndexOf("<usun>");
int indeksEnd = txt.IndexOf("</usun>");
int i = indeksEnd - indeksStart;
string podlancuch1 = txt.Substring(0,indeksStart+6);
string podlancuch2 = txt.Substring(indeksEnd);
string zdanie = podlancuch1 + "*" + podlancuch2;