Podmiana stringów w ArrayList

0

Jak w temacie, potrzebuje podmienić stary string na nowy ;)

        public static string zapiszNazwe(string stara_nazwa, string nowa_nazwa)
        {
            string nowaNazwa = System.Web.HttpContext.Current.Server.MapPath("~/Pliki/" + nowa_nazwa);
            string staraNazwa = System.Web.HttpContext.Current.Server.MapPath("~/Pliki/" + stara_nazwa);
            File.Move(staraNazwa, nowaNazwa);

            // w tablicy z sesji znajdują się stringi i chce teraz podmienić stary string na nowy nie znając jego indeksu (pozycji)
            ArrayList tablica = (ArrayList)HttpContext.Current.Session["sciezkiPlikow"]; 
            tablica[ArrayList.IndexOf(staraNazwa)] = nowaNazwa; // myślałem nad czymś takim, ale się krzaczy.. :/ 

            return "Nazwa została zmieniona? Stara Nazwa: " + staraNazwa + " Nowa Nazwa: " + nowaNazwa;
            //HttpContext.Current.Response.Redirect(HttpContext.Current.Request.Url.AbsoluteUri);

        }
0

Wrzucasz jakiś kod, kompilator Ciebie nie rozumie, ja też nie rozumiem, co Ty w ogóle chcesz zrobić?

0

wiem co chce zrobić i to zrobiłem ;))

dla potomnych:


            ArrayList tablica = (ArrayList)HttpContext.Current.Session["sciezkiPlikow"];
            for (int i = 0; i < tablica.Count; i++)
            {
                tablica[i] = ((String)tablica[i]).Replace(staraNazwa, nowaNazwa);
            }

0
d4ng napisał(a):

wiem co chce zrobić i to zrobiłem ;))

dla potomnych:


            ArrayList tablica = (ArrayList)HttpContext.Current.Session["sciezkiPlikow"];
            for (int i = 0; i < tablica.Count; i++)
            {
                tablica[i] = ((String)tablica[i]).Replace(staraNazwa, nowaNazwa);
            }

Współczuję tym 'potomnym" którzy zechcą z tego kodu kiedykolwiek skorzystać...

0

dlaczego? dopiero się uczę i na pewno mój kod jest co najmniej cepowaty, ale działa i robi to co ma robić. Będę wdzięczny za uwagi i hmm lekcje ;)

0

Jeśli w tej tablicy przechowujesz tylko dane typu 'System.String' to użyj kolekcji silnie typowanej np: List<string> wtedy będziesz mógł pisać dużo bardziej przejrzysty kod (np. poniżej). Pamiętaj, że rzutując dajesz kompilatorowi znać, że wiesz więcej na temat obiektów niż on co najczęściej jest konsekwencją pisania nieprzemyślanego kodu. Czasami oczywiście rzutowania nie da się uniknąć (np: przechowując dane w sesji).

 
            var list = new List<string>
                       {
                           "Ala",
                           "Ola",
                           "Kasia"
                       };


            for (var i = 0; i < list.Count; i++)
            {
                list[i] = "Alicja";
            }
0
var paths = HttpContext.Current.Session["sciezkiPlikow"] as IEnumerable<string>;
var result = paths.Select(str => str.Replace(oldName, newName)).ToList();
0
n0name_l napisał(a):
var paths = HttpContext.Current.Session["sciezkiPlikow"] as IEnumerable<string>;
var result = paths.Select(str => str.Replace(oldName, newName)).ToList();

Jak już robisz rzutowanie przez 'as' to potem sprawdź czy to rzutowanie wykonało się poprawnie i wynik nie jest null bo przy wywołaniu Select() dostaniesz 'System.ArgumentNullException'.

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