Autor |
Beitrag |
xtribe
Hält's aus hier
Beiträge: 8
|
Verfasst: Di 21.08.07 09:35
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 
Hält's aus hier
Beiträge: 8
|
Verfasst: 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 
Hält's aus hier
Beiträge: 8
|
Verfasst: Di 21.08.07 12:03
|
|
Kha
      
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: 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 
Hält's aus hier
Beiträge: 8
|
Verfasst: 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
      
Beiträge: 2021
Erhaltene Danke: 6
Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
|
Verfasst: 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 
Hält's aus hier
Beiträge: 8
|
Verfasst: 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 
Hält's aus hier
Beiträge: 8
|
Verfasst: 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 
Hält's aus hier
Beiträge: 8
|
Verfasst: 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
      
Beiträge: 2021
Erhaltene Danke: 6
Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
|
Verfasst: 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:
C#-Quelltext
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 
Hält's aus hier
Beiträge: 8
|
Verfasst: 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; |
|
|