Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Nahrazení určité části řetězce

Aktivity
Avatar
Petr Fojt
Člen
Avatar
Petr Fojt:2.1.2019 23:29

Dobrý den, předem se omlouvá za hloupý dotaz ale jsem začátečník a netuším jak v mém případě postupovat.

Potřebuji vyřešit následující:
Do TextBox1 budu zadávat určitý řetězec znaků (v mém případě bude daný řetězec představovat IP adresu) ve tvaru například "10.31.52.162". Potřebuji funkci, která po kliknutí na tlačítko nahradí číslo ve třetím oktetu (tzn mezi druhou a třetí tečkou - v našem případě 52) jiným číslem (které bude pevně zadáno - například 100) a následně do TextBox2 vypíše novou IP adresu s upraveným třetím oktetem - v našem případě 10.31.100.162.

Mám problém s tím že nevím jakou funkci správně použít k vyhledání dat mezi druhou a třetí tečkou (odělovačem), následně tyto data nahradit a opět spojit v jeden string.

Poradí prosím někdo?

Děkuji

 
Odpovědět
2.1.2019 23:29
Avatar
Odpovídá na Petr Fojt
Adam Gajdečka:2.1.2019 23:33

napiš si na to cyklus

string mujTretiOktet = "";
int count = 0;
foreach(char znak in myIPstring)
{
if(znak=='.'){
count++;
}

if(count>=3){

mujTretiOktet+=znak;
}
}

myIPstring.Replace(mujtretiOktet,"muj novy oktet");

Už to dnes píšu z posledních sil, takže možná tam mám chybku, ale snad jsem tě nasměroval. Určitě bude i jednodušší clever řešení.

Editováno 2.1.2019 23:34
 
Nahoru Odpovědět
2.1.2019 23:33
Avatar
vajkuba1234
Člen
Avatar
Odpovídá na Petr Fojt
vajkuba1234:3.1.2019 1:27
public class Program
    {
        private static readonly string thirdSegmentValue = "100";
        private static readonly string ipAddressBase = "10.31.52.162";

        public static void Main(string[] args)
        {
            Console.WriteLine($"Old ip address: {ipAddressBase}");
            Console.WriteLine($"New ip address: {GetNewIpAddress()}");

            Console.ReadKey();
        }

        private static string GetNewIpAddress()
        {
            var stringArr = ipAddressBase.Split('.');
            stringArr[2] = thirdSegmentValue;

            return string.Join('.', stringArr);
        }
    }
Nahoru Odpovědět
3.1.2019 1:27
No hope, no future, JUST WAR!
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:4.1.2019 10:45

Nebo muzes pouzit regularni vyraz. V Php by to vypadalo treba takto

<?php
$str = "543.543.543.543";
preg_replace('~^(\d+)\.(\d+)\.\d+\.(\d+)$~', "$1.$2.123.$3" , $str);
preg_replace('~^([0-9]+)\.([0-9]+)\.[0-9]+\.([0-9]+)$~', "$1.$2.123.$3" , $str);
// ^...$ zacatek a konec stringu, mohlo by to byt i bez techto znacek
// () zavorka, $1, $2, $3
// \d+ cislo (0-9), 1-n krat
// \. tecka, 1 krat
?>
Editováno 4.1.2019 10:46
 
Nahoru Odpovědět
4.1.2019 10:45
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.