Entwickler-Ecke
C# - Die Sprache - title.Substring - Text aus Variable lesen bis '[' oder '('
xtribe - Di 21.08.07 09:35
Titel: title.Substring - Text aus Variable lesen bis '[' oder '('
Hallo,
ich möchte aus einer Variablen 'Title' text auslesen, bis ich auf ein '
[' oder '
(' stoße.
z.Bsp. von
Zitat: |
Oral Fixation Vol.2 (New Version)
|
möchte ich nur bis zur Klammer auslesen.
Zitat: |
Oral Fixation Vol.2
|
Dies wollte ich mit folgendem code lösen - etwas stimmt aber nicht, ich bekomme die Meldung: "Zeilenumbruch innerhalb einer Konstanten".
C#-Quelltext
1:
| (Title.Substring(0, Title.IndexOfAny(new char[] { '(', '[' })).Trim()) |
Auch mit diesem code habe ich es probiert und habt auch nicht funktioniert.
C#-Quelltext
1:
| (Title = Title.Substring(0, Title.IndexOfAny(new char[] {'(', '['}))) |
Hier auch noch der gesamte String den ich nutze um den inhalt der Variablen auszulsesen und weiterzugegeben (funktioniert).
C#-Quelltext
1:
| prdtTitle|exact|[TextTranslator.RemoveDiacritics [b](Title)[/b]]|mainPerformer|exact|[TextTranslator.RemoveDiacritics (Artist)]|false |
(Title) muss gegen einen code ersetzt werden, der wie oben schon beschrieben den Title nur bis zu
( oder
[ ausliest
Der komplette string hat demnach bei mir so ausgesehen:
C#-Quelltext
1:
| prdtTitle|exact|[TextTranslator.RemoveDiacritics ((Title.Substring(0, Title.IndexOfAny(new char[] { '(', '[' })).Trim()))]|mainPerformer|exact|[TextTranslator.RemoveDiacritics (Artist)]|false |
C#-Quelltext
1:
| prdtTitle|exact|[TextTranslator.RemoveDiacritics (Title = Title.Substring(0, Title.IndexOfAny(new char[] {'(', '['})))]|mainPerformer|exact|[TextTranslator.RemoveDiacritics (Artist)]|false |
Hat jemand einen Vorschlag was bei
C#-Quelltext
1:
| (Title.Substring(0, Title.IndexOfAny(new char[] { '(', '[' })).Trim()) |
korrigiert werden muss?
Vielen Dank!
xtribe
xtribe - Di 21.08.07 10:43
ok. ich habs nochmal getestet...
wenn er sofort auf einen string mit [ oder ( stößt funktioniert es perfekt! Alledings bekomme ich die fehlermeldung wenn er auf einen string ohne ( oder [ stößt.
Zitat: |
ERROR - Parse text document failed: Die Länge darf nicht kleiner als 0 (null) sein. |
wie kann ich das mit einer if funktion in C# lösen?
xtribe - Di 21.08.07 12:03
Methode1 : 'Der typ string kann nicht implizit in int konvertiert werden'
C#-Quelltext
1: 2: 3: 4: 5:
| int index = Title.Substring(0, Title.IndexOfAny(new char[] {'(', '['})); if( index != -1 ) { Title.Substring(0, index).Trim(); } |
Methode 2: 'Der Typ sring kann nicht imlizig in int konvertiert werden'
C#-Quelltext
1: 2: 3: 4: 5:
| int index = Title.Substring(0, Title.IndexOfAny(new char[] { '(', '[' })); if(index != -1) Title = Title.Substring(0, Title.IndexOfAny(new char[] { '(', '[' })).Trim(); else Title = Title; |
Hat jemand hierfür eine Lösung?
Moderiert von
Christian S.: Code- durch C#-Tags ersetzt
Kha - Di 21.08.07 12:13
Warum hast du denn gerade dein Posting editiert und den einzig richtigen Ansatz entfernt? Du willst du erkennen, ob IndexOfAny fehlschlägt, also musst du dessen Rückgabewert speichern und diesen auf -1 testen. Zu dem Fehler, den du vorhin noch genannt hattest, müsstest du noch ein wenig mehr Code zeigen. Scheint so, als hättest du den Code in eine Funktion verpackt, dann muss jeder Pfad in einem return enden.
xtribe - Di 21.08.07 12:42
'Nicht alle Codepfade geben einen Wert zurück'.
C#-Quelltext
1: 2: 3: 4: 5:
| int index = Title.IndexOfAny(new char[] { '(', '[' }); if( index != -1 ) { Title.Substring(0, index).Trim(); } |
das ist in einer c# anwendung in einer funktion.
Moderiert von
Christian S.: Code- durch C#-Tags ersetzt
JüTho - Di 21.08.07 13:54
Khabarakh hat folgendes geschrieben: |
Warum hast du denn gerade dein Posting editiert und den einzig richtigen Ansatz entfernt? Du willst du erkennen, ob IndexOfAny fehlschlägt, also musst du dessen Rückgabewert speichern und diesen auf -1 testen. Zu dem Fehler, den du vorhin noch genannt hattest, müsstest du noch ein wenig mehr Code zeigen. Scheint so, als hättest du den Code in eine Funktion verpackt, dann muss jeder Pfad in einem return enden. |
@xtribe
Du musst also - wenn wir den Fehler finden sollen - die
gesamte Methode zeigen.
Und bitte richte Dich nach dem Vorschlag von Christian: unter "Bereiche" nicht "allg.Code", sondern C# anklicken, wenn Du mit C#-Code kommst.
Jürgen
xtribe - Di 21.08.07 14:23
Hi alle!
Erstens mal Dank für eure bisherige Hilfe! Diesmal habe ich unter Breiche C# Code ausgewählt.
Ich kann euch die Methode leider schicken, da ich diesen Code in einer "On Change" funktion in einer veröfentlichten Appliktion einfüge die mit C# geschrieben wurde.
Das ganze funktioniert so:
Ich lese werte aus einem Text File, der Tittel wird durch eine variable mit der text parsing lenguage ausgelesen und wird an ein gleichnamiges Feld an eine Tabelle übergeben.
Sobald sich die Variable Title "on change" verändert/gefüllt wird, soll folgender code aktiviert werden, der dem Feld/Variablen "Song" in der selben Tabelle den string von Title bis zu ( oder [ ü übergibt.
Der Code läuft nun nachdem ich return; genutzt habe ohne probleme aber das Feld Song bleibt leer.
nur als Info - wenn ich "on-change" unter Title Song = Title; Return Song; eingebe, wird das Feld Song mit dem Inhalt von Title gefüllt.
es soll so funktionieren:
wenn index von title = -1 dann Song = Title.Substring(0, index).Trim();
wenn index von title nicht -1 dann Song = Title
C#-Quelltext
1: 2: 3: 4: 5: 6: 7:
| int index = Title.IndexOfAny(new char[] { '(', '[' }); return index; if( index != -1 ) { Song = Title.Substring(0, index).Trim(); return Song; } |
Könnt ihr erkennen was da noch falsch ist?
Vielen Dank,
xtribe
xtribe - Di 21.08.07 14:48
So ich habe den selben code in die funktion "Calculated Value" des Feldes/Variablen Song geschmissen.
Nun wird Song gefüllt. Aber mit dem Index also z.Bsp. mit -1, oder 17 oder 11.. anstatt mit dem ausgelesen title!
Hilfe!!
xtribe - Di 21.08.07 15:35
ok. der index nehme ich an kommt aus return index;
ich kann den code aber nciht ohne return index; schreiben. Was kann ich machen damit mir der tatsächliche string.substring angezeigt wird?
JüTho - Di 21.08.07 15:37
xtribe hat folgendes geschrieben: |
Ich kann euch die Methode leider schicken, da ich diesen Code in einer "On Change" funktion in einer veröfentlichten Appliktion einfüge die mit C# geschrieben wurde. |
Wenn Du die Methode hast, kannst Du sie doch kopieren...,
xtribe hat folgendes geschrieben: |
So ich habe den selben code in die funktion "Calculated Value" des Feldes/Variablen Song geschmissen.
Nun wird Song gefüllt. Aber mit dem Index also z.Bsp. mit -1, oder 17 oder 11.. anstatt mit dem ausgelesen title! |
Du schreibst:
An dieser Stelle wird die Methode
sofort beendet und der Wert von index zurückgegeben.
OK, das hast Du jetzt selbst erkannt.
Es bleibt dabei: Eine
vollständige Antwort kann nur gegeben werden, wenn vollständige Informationen gegeben werden. Jürgen
xtribe - Di 21.08.07 16:01
wie gesagt... der quellcode steht mir leider nicht zur Verfügung.
konnte es aber lösen.
Danke an euch alle!
C#-Quelltext
1: 2: 3: 4:
| int index = Title.IndexOfAny(new char[] { '(', '[' }); if( index != -1 ) Song = Title.Substring(0, index).Trim(); else Song = Title; return Song; |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!