Zbavení se odřádkování   zodpovězená otázka

VB.NET

Zdravím, mám následující string:

Nějaký text\n pokračující na dalším řádku

Což se mi pak zobrazí například v labelu jako text na dva řádky. Já bych ale znak dalšího řádku chtěl předělat na znak |.

Zkoušel jsem to pomocí

line.Replace("\n", "|")

To ale bohužel nefunguje.

Díky za pomoc

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak ne,

oprava: Asi to není \n. Visual Basic si ho asi předělal na nějaké vlastní odřádkování. Zkusil jsem :

line.Replace(vbCrLf, "|")

ale stále bez výsledku..

nahlásit spamnahlásit spam 0 odpovědětodpovědět
dim radkyText as string=......
dim finalText as string
dim lines() as string

lines=radkyText.split(vbNewLine)
finalText=string.join(lines,"|")

nebo by šlo založit nový richTextBox,

text do něj načíst,

richTextBox ten text automaticky rozděluje do textového pole.

PetrS

nahlásit spamnahlásit spam 0 odpovědětodpovědět

VB používá na odřádkování konstantu vbrLf což je sekvence znaků Chr(13) & Chr(10).

Pokud trváte na "|", pak musíte vytvořit funkci, která znak "|" převede na vbCrLf např.

   Private Function ZmenaZnakuOdradkování(ByVal Text As String) As String
        Return Replace(Text, "|", vbCrLf)
    End Function

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Aha, tak vy potřebujete se zbavit odřádkování, tak pak v té funkci zadejte:

    Return Replace(Text, vbCrLf, " ")

nahlásit spamnahlásit spam 0 odpovědětodpovědět

1. \r, \n, \t a podobné jsou záležitosti céčkových jazyků, fungují v C#, ale ne ve VB

2. Konec řádku může být reprezentován buď dvojicí znaků 13 a 10 (CR a LF), to je typické pro MS-DOS a Windows, nebo jen LF (Unix) anebo jen CR (Mac). Ve VB.NET na to je konstanta vbCrLf anebo si znaky uděláte přes funkci Chr, případně přetypováním integeru na Char.

Dá se použít Environment.NewLine, což vrátí konec řádku na dané platformě (na Monu na tučňákovi by to vrátilo jen \n).

Nahrazení, které si poradí se všemi typy, by mělo vypadat takto:

str.Replace(vbCrLf, "|").Replace(vbCr, "|").Replace(vbLf, "|")

Anebo můžete použít StringReader, který umí číst po řádcích:

Using sr = new StringReader(str)
    Dim line As String = str.ReadLine()
    While line IsNot Nothing
        'zpracovat řádek

        line = str.ReadLine()
    End While
End Using
nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Díky, zafungovalo

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Načtěte celý řetězec do proměnné (pokud je rozumně velký) a použijte metodu Replace. Funguje spolehlivě.

Dim text = IO.File.ReadAllText("C:\WINDOWS\win.ini")
Dim replacedText = text.Replace(vbCrLf, "|")

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback