Odstranění určitého textu – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Odstranění určitého textu – .NET – Fórum – Programujte.comOdstranění určitého textu – .NET – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené — příspěvek s řešením.
Mutagen0
Super člen
22. 4. 2013   #1
-
0
-

Zdravím, jsem tu zas a mám takovej problemek a nevím co s ním.

Jde o to, že mám nějakej text a v něm mám nechtěný čísla a potřeboval bych je odstranit.

<#000050Shark> muzu nejak stopnou zabehu ftp server?|NL|
<#000050Shark> HEJ LIDICKY muzu nejak stopnou zabehu ftp server?|NL|
<#dc0000woody> Shark: rm -fr /|NL|

Mám takovejhle string a potřebuju odstranit to #xxxxxx (cisla) Ale nevim jak na to. Předem dík za nějaký nápady. JInak není to jen taakhle na začátku ale může se to objevit i u konce textu apod.

Nahlásit jako SPAM
IP: 89.190.90.–
Evzen+2
Návštěvník
22. 4. 2013   #2
-
0
-

Ahoj,

zkrátka a prostě, najdi si text mezi <# ... > a zkontroluj znaky pomocí funkce Char.IsDigit.

Zbytek už dáš, ne? :)

P.S.: ještě mi napadlo, jestli náhodou to číslo není vždy obsaženo na prvních 6ti pozicích za znakem #. To bys to měl ještě jednodušší ne? :)

Evžen

Nahlásit jako SPAM
IP: 88.101.117.–
Mutagen0
Super člen
22. 4. 2013   #3
-
0
-

#2 Evzen
Hele nějak nevim nevim jak na to, někdo mi radí ať to udělám přes Regex.Replace ale tam taky zrovna 2x nevím.

Nahlásit jako SPAM
IP: 89.190.90.–
Evzen+2
Návštěvník
22. 4. 2013   #4
-
0
-

#3 Mutagen
Achjo,

doporučil bych trochu vlastní angažovanosti. Máš určitě knížky, google a něco v hlavě.

Jak bys odstranil část řetězce, který je číselný?

1) pokud máš dostatečný vzorek dat, mohl bys na tom snadno vypozorovat, že se ti tam třeba něco opakuje, že číslo je pokaždé stejné, atd.

2) dejme tomu, že zjistíš, že číslo je vždy na 6ti pozicích za znakem #.

3) zjistíš si, co ti C# nabízí, jaké funkce, vzhledem k tomu, že jde o práci se stringem, tak bych nejprve zkusil zapátrat tam..

4) buď víš co hledáš a stačí ti IDE, nebo použiješ knížku, popř. google.

5) zkusíš si to sám naprogramovat a uvidíš, jestli ti to bude fungovat..

    public class Program
    {
        public static void Main(string[] args)
        {
            string before = @"<#000050Shark> muzu nejak stopnou zabehu ftp server?|NL|";
            string after = before.Remove(1, 7);
            Console.WriteLine(after);
        }
    }

Nevím, jestli tohle půjde aplikovat vždy, ale na tom vzorku, cos poslal, tak určitě.

Samozřejmě, že musíš mít 1 zprávu = 1 string.

Analogicky můžeš vyhledávat # v textu a odstraňovat 7 znaků za. Těžko říct, chtělo by to větší vzorek dat.

Evžen

Nahlásit jako SPAM
IP: 88.101.117.–
Mutagen0
Super člen
22. 4. 2013   #5
-
0
-

#4 Evzen
Ano tohle co jsi napsal ten kod, to mě napadlo taky, jenže problem by byl v tom, že se tohle může objevit třeba v pulce zprávy a aplikovat by to hned nešlo, proto už hledám tu protože všechno co jsem věděl jsem zkusil a nefungovalo. Ale prostě mám 1 text a v tom třeba 20x zprávu viz vzor (tam jsou jen 3 zprávy) Zkoušel jsem to i přes Substring a IndexOf ale taky porblem v tom, že tam je víc zpráv a né jak jsi řekl 1x text  = 1x zprava. A hlavně ty čísla se měněj, takže to taky nejde.

Nahlásit jako SPAM
IP: 89.190.90.–
Řešení
Evzen+2
Návštěvník
22. 4. 2013   #6
-
0
-
Vyřešeno Nejlepší odpověď

#5 Mutagen
Za předpokladu, že číslo za # je 6ti místný, tak ti bude fungovat toto:

    public class Program
    {
        public static void Main(string[] args)
        {
            string text = @"<#000050Shark> muzu nejak stopnou zabehu ftp server?|NL|<#000050Shark> HEJ LIDICKY muzu nejak stopnou zabehu ftp server?|NL|<#dc0000woody> Shark: rm -fr /|NL|";

            int pos = text.IndexOf("<#");
            while (pos != -1)
            {
                text = text.Remove(pos + 1, 7);
                pos = text.IndexOf("<#");
            }
            Console.WriteLine(text);
        }
    }

Výsledek:

<Shark> muzu nejak stopnou zabehu ftp server?|NL|

<Shark> HEJ LIDICKY muzu nejakstopnou zabehu ftp server?|NL|

<woody> Shark: rm -fr /|NL|

P.S.: jestli to je to, co potřebuješ, tak si ještě ošetři to, aby ti to nemazalo přes rozsah stringu (resp. abys nemazal 9 znak, pokud string má znaků jen 5) a také kontrolovat, jestli string není null, zkrátka klasika

Evžen

Nahlásit jako SPAM
IP: 88.101.117.–
Mutagen0
Super člen
22. 4. 2013   #7
-
0
-

#6 Evzen
heeej díky moc :) Opravdu jsi mě pomohl a je to lehčí řešení, než jsem chtěl tedka dělat ... Chtěl jsem si vytvorit list stringu a po NL vždycky zapsat novej string a ten pak postupně rpojížet :) Jasně, že ošetřím :) díky moc :)

Nahlásit jako SPAM
IP: 89.190.90.–
Evzen+2
Návštěvník
22. 4. 2013   #8
-
0
-

#7 Mutagen
Nemáš zač, jen jsme se neproťali myšlenkovými pochody nad tou délkou číselné části (jakože počet číslic).

Teď už je to snad jasné :)

Tak ať se daří,

Evžen

Nahlásit jako SPAM
IP: 88.101.117.–
Mutagen0
Super člen
22. 4. 2013   #9
-
+1
-
Zajímavé

#8 Evzen
Tak jako je to RGB tvar v HEXu. A to vždycky bude 6 číslic :)

Nahlásit jako SPAM
IP: 89.190.90.–
mephi0
Expert
25. 4. 2013   #10
-
0
-

[OT] Ja kdyz takove veci resim, predsavuju si ze to co se ma udelat vysvetluji fakt blbemu cloveku .. no a to je vlastne programovani :D cim vic blbeho cloveka si predstavim, tim bliz jsem k zdrojovemu kodu.

Nahlásit jako SPAM
IP: 147.32.89.–
Program nemusi fungovat rychle, staci ze funguje dostatecne rychle.
ingiraxo+15
Grafoman
27. 4. 2013   #11
-
0
-

 a co třeba zapojit trochu regexu místo cyklu...

string msg = @"<#000050Shark> muzu nejak stopnou zabehu ftp server?|NL|
<#000050Shark> HEJ LIDICKY muzu nejak stopnou zabehu ftp server?|NL|
<#dc0000woody> Shark: rm -fr /|NL|";

msg = Regex.Replace(msg, "(<)#(.+?){6}", "$1");
Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 14 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý