String auf Whitespacezeichenfolge untersuchen
-
Ich möchte herausfinden, ob in einem String (hier: AnsiString) die Zeichenfolge \r \n vorkommt, also als ASCII 13 10, ohne Leerzeichen dazwischen. Hat jemand nen Vorschlag, wie ich das möglichst einfach anstelle?
-
Hallo
siehe AnsiString::Pos.
bis bald
akari
-
So weit, so gut, nur welchen Parameter gebe ich Pos an? Habe da einiges ausprobiert, aber bisher hat der nix erkannt...
-
Aus der Hilfe:
int Pos (const AnsiString & subStr);
Pos gibt den Index des Zeichens im AnsiString zurück, mit dem der Teilstring subStr beginnt, wobei 1 der Index des ersten Zeichens ist, 2 der Index des zweiten Zeichens usw. Ist der Teilstring subStr nicht im AnsiString enthalten, gibt Pos 0 zurück.
-
Das ist mir klar, aber wie bekomme ich den bubstring mit meinen beiden Whitespacezeichen???
-
Hallo
AnsiString text = "Test\r\nNeu"; int pos = text.Pos("\r\n");bis bald
akari
-
Und genau das funktioniert nicht, weil dann auf Zeichenfolge "\r\n" untersucht wird, ich aber auf '\r''\n' untersuchen möchte.
Folgendes funktioniert:char CrLf[2] = {13, 10}; text.Pos(CrLf)...Wie ich eben raus bekommen hab. Aber geht das nicht auch ohne die zusätzliche Variable?
-
Hallo
weil dann auf Zeichenfolge "\r\n" untersucht wird, ich aber auf '\r''\n' untersuchen möchte.
Und was ist deiner Meinung nach der Untershcied zwischen "\r\n" und '\r''\n'?
Mein Codeausschnitt ist jeenfalls genau das was du suchst, probier den doch einfach mal aus.
bis bald
akari
-
Der Unterschied ist, dass "\r\n" 4 ASCII-Zeichen sind und '\r' '\n' 2 ASCII-Zeichen. Dein Beispiel funktioniert nur, weil du es genauso eingegeben hast. Ich bekomme aber meine Zeichen über die serielle Schnittstelle, da ist ein Zeichen auch nur ein Zeichen.
-
heimchen schrieb:
Der Unterschied ist, dass "\r\n" 4 ASCII-Zeichen sind und '\r' '\n' 2 ASCII-Zeichen.
quatsch. wenn man mal von der 0 am ende von "\r\n" absieht (was aber für so'ne suchfunktion wie 'pos' egal ist) sind beides 2 zeichen.
-
Hallo
dass "\r\n" 4 ASCII-Zeichen sind
Schwachsinn.
Bitte probier doch einfach mal diese Quellcodezeile aus und staune.Label1->Caption = AnsiString("\r\n").Length();Ich bekomme aber meine Zeichen über die serielle Schnittstelle, da ist ein Zeichen auch nur ein Zeichen.
Bitte belies dich doch erstmal über Escapesequenzen.
bis bald
akari
-
heimchen schrieb:
Der Unterschied ist, dass "\r\n" 4 ASCII-Zeichen sind und '\r' '\n' 2 ASCII-Zeichen. Dein Beispiel funktioniert nur, weil du es genauso eingegeben hast. Ich bekomme aber meine Zeichen über die serielle Schnittstelle, da ist ein Zeichen auch nur ein Zeichen.
du meinst sicher bytes, denn die kriegst du über die serielle.
Aber "\r\n" und '\r''\n'sind (fast) gleich(macht aber keinen unterschied)
1. 0x0A0D
2. 0x0A 0x0Dwenn du es in ein binärfile schreiben willst steht es sowiso als 0D 0A oder 0A 0D da
corvin
-
Seit wann sind
Der Unterschied ist, dass "\r\n" 4 ASCII-Zeichen
das 4 Zeichen??Kann nur 2 erkennen
Schon mal mit Escapesequenzen befasst?
-
Ok ok, der Fehler lag in einem anderen Programmabschnitt, e
s sind nur 2 Zeichen!