Naučit se PHP Naučit se PHP
Pouze tento týden až 80 % sleva na vývoj webů v PHP.
Extra 10 % bodů navíc a tričko zdarma při zadání kódu "TRIKO10"

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

C# .NET .NET (C# a Visual Basic) Nahrazení určité části řetězce American English version English version

Aktivity (3)
Avatar
Petr Fojt
Člen
Avatar
Petr Fojt:2. ledna 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. ledna 23:29
Avatar
Odpovídá na Petr Fojt
Adam Gajdečka:2. ledna 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. ledna 23:34
 
Nahoru Odpovědět 2. ledna 23:33
Avatar
vajkuba1234
Člen
Avatar
Odpovídá na Petr Fojt
vajkuba1234:3. ledna 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  +5 3. ledna 1:27
No hope, no future, JUST WAR! For world peace Israel must be DESTROYED!
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:4. ledna 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. ledna 10:46
 
Nahoru Odpovědět  -2 4. ledna 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.