Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Zeile mit "\x00" einlesen
degri2006
myCSharp.de - Member



Dabei seit:
Beiträge: 17

Themenstarter:

Zeile mit "\x00" einlesen

beantworten | zitieren | melden

Hallo,
ich habe einen Problem. Ich habe einen String und enthält u.a. folgende Zeile:

$a= "blablablablablablablabla\x00" wide nocase

Ich will die Substrings links und rechts vom Gleichheitszeichen in seperate Variablen speichern.
line.Split("=")[0] -> $a
line.Split("=")[1] -> "blablablablablablablabla\x00" wide nocase

Links vom Gleichheitszeichen wird korrekt gespeichert, der String rechts vom Gleichheitszeichen macht Probleme:
"blablablablablablablabla
Es wird beim Nullterminator abgebrochen. Kann mir jemand einen Tip geben wie ich den String rechts vom Gleichheitszeichen komplett abspeichern kann?
private Nachricht | Beiträge des Benutzers
gfoidl
myCSharp.de - Team

Avatar #avatar-2894.jpg


Dabei seit:
Beiträge: 7540
Herkunft: Waidring

beantworten | zitieren | melden

Hallo degri2006,

ich kann das geschilderte Verhalten nicht reproduzieren.
Welche .NET Version verwendet du und welche Culture (normal jene vom Betriebssystem, also de-DE od. de-AT (wie bei mir)).


using System;

string line = "$a=\"blablablablablablablabla\x00\" wide nocase";

string a = line.Split("=")[0];
string b = line.Split("=")[1];

Console.WriteLine(line);
Console.WriteLine(a);
Console.WriteLine(b);

liefert

$a="blablablablablablablabla " wide nocase
$a
"blablablablablablablabla " wide nocase

Die \0 werden / können so nicht dargestellt werden.

BTW: statt "=" (ist ein String) ist es besser die char-Überladung zu verwenden, also


string a = line.Split('=')[0];
string b = line.Split('=')[1];
Hier ist (unter .NET 5.0 und de-AT) das Ergebnis gleich, aber wegen Globalization APIs use ICU libraries on Windows könnte es einen Unterschied machen.

mfG Gü
Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"
private Nachricht | Beiträge des Benutzers
degri2006
myCSharp.de - Member



Dabei seit:
Beiträge: 17

Themenstarter:

beantworten | zitieren | melden

Hi,
danke für die Info. Ich arbeite auf einer Linux Maschine. dotnet --list-sdks sat 5.0.102. Ich habe auf derselben Maschine eine ziemlich genaue, aber etwas einfacherer Konstellation hergestellt und in dem Fall klappt es auch. Ich muss es mir morgen genauer angucken, warum es mit dem ursprünglichen Fall nicht klappt, aber bei dem anderen, das äquivalent ist, klappt.
private Nachricht | Beiträge des Benutzers