Dobrý den,
mám cyklus, ve kterém přidávám tvrdé (jasné) nové řádky - pomocí Environment. Jenže tím mi na konci zůstane mezera a nový řádek - ve Windows \r\n. Než volat cyklus (string.Substring), či tak, raději bych to ignoroval regexem, kterým se snažím rozdělit řádek na hraničním slově - měkký enter. Jenže tato šablona - "(\r\n|\r|\n)" - nepřinesla kýžený výsledek. Pakliže jsem měl psolední slovo s čistým koncem, tak to nenašlo nic. Logika - přidal jsem $! "(\r\n|\r|\n|$)" Leč to funguje jen u čistého konce. U konce " \r\n" - tedy mezera + nový řádek + konec ($) jaksi stále dává prázdný řádek navíc. Tak jsem splodil toto: "(\r\n$|\r$|\n$|\r\n|\r|\n|$)", ovšem to přidalo dokonce řádek navíc... :D Tak mám raději umazat koncové " \r\n"?
Děkuji.
for (int index = 0; index < Tabs.Count; index++)
container.Text += Tabs[index].Title + " <" + index + "> " + Environment.NewLine; // zde to končí " \r\n"
....
string line, currentPart = Text.Substring(start, currentMargin);
Match newLine = Regex.Match(currentPart, "(\r\n$|\r$|\n$|\r\n|\r|\n|$)");
if (newLine.Success)
length = newLine.Index;
else
{
length = currentPart.LastIndexOf(' ');
if (length == -1)
{
length = currentMargin;
difference = 0;
}
}
#2Kit
To jako nemám odsazovat namespace a class? Děkuji nechci - celý život odsazuji cokoliv uvnitř {} a vždy mi to usnadnilo život. Většinou publikovaný kód srazím, ale nyní jsem spěchal... Tvé řešení je vlastně stejné jako mé -> já však doufal, že se po nalezení shody s první možností (jedna|dvě|...) na ostatní vykašle... Zkrátka tvé řešení dělá prázdný řádek stejně jako mé. U čistého konce je to OK. (konec bez " \r\n") Ale u nečistého je tam řádek navíc...
#3Matěj Andrle
Ale jo, odsazuj, ale není to důvod k tomu, abys měl řádky dlouhé 136 znaků. Víš, jak je to horizontální rolování nepříjemné, zejména u delších zdrojáků?
Vidím, že tam tu mezeru na konci zbytečně přidáváš. To neumíš zavolat metodu join()?
#4Kit
Znovu - nemohu! Nemohu použít tento jednoduchý cyklus (schovaný uvnitř), poněvadž mám další 3 metody, které také naplňují texty do dialogu. A tyto metody již nejen, že shromažďují data z listu, což by šlo vzít přes Join, leč tyto metody dělají i další operace, na které potřebují znát index. A na pomocný List kašlu - to raději ten Substring... Jedna moje chyba je, že se nedívám na zbývající text - zda to nejsou již jen koncové serepetky. Ale tento ukázkový text je dost krátký na to, aby bylo jasné, že je chyba i v regexu... Breakpoint to jasně dokazuje:
"f <0> \r\n"
Regex to má vzít celé jako jeden řádek - má najít " \r\n$" - tak však nečiní...
#2Kit
Opravuji se - tvá šablona dokonce nefunguje správně! Tvá šablona funguje stejně jako má jen u dialogů. U obyčejného textu (který není dále ošetřen) mi to hází prázdné řádky na nové - což můj ne - můj zabraňuje vzniku zbytečných odsazení, kdy musím půl hodiny scrollovat. Čily bych si s tím ještě pohoršil - v dialogu bych měl stále mezeru navíc a ještě u obyčejného textu měl miliardu prázdných řádků a uscrolloval bych se, než naleznu text.
#6Matěj Andrle
Nemohu za to, že si neumíš vyfiltrovat prázdné řádky. Také nemohu za to, že jsi nepochopil, že pak už tam žádný regex nebude, že je zbytečný.
Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:221:5...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
#10Kit
Jak z metody Join dostanu indexy? Jak? Napiš mi ten zázrak a budu tě považovat za boha... Potřebuji indexy do podmínky ke zvolení textu, který mám nastavit...
#11Matěj Andrle
Když to jde v PHP, musí to jít i v C#. Hledej trojici slov map, filter a reduce pro C#. Ty indexy si musíš vytáhnout ještě před slepením seznamu do stringu.
Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:221:5...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
#12Kit
Takže není jednodušší najít správný regex... :D Tak vysvětli proč to $ vezme a "\r\n$" ne... Mezeru vůbec neřeším - tou stejně čistím celou konzoli... (Pročež jsou všude.) Testovací string:
#12Kit
Tak jsem si na to musel zase přijít sám... :( :D Je to prosté - můj kód je zcela správný! Nepočítá jen s jednou vadou - velikost stringu neodpovídá navrácené hodnotě z vlastnosti Length - stačilo tedy dorovnat tento neduh a jede mi to dokonale... (Holt to nějaký string asi zobrazí blbě - když to vyjde zrovna na ten divný počet, ale zatím jsem na to nenarazil.)