2016-06-07 19 views
0

Ich habe ein String-Array, wo einige der Strings in dem Array eine \ am Ende haben“:Wie kann ich ein nachkommendes Anführungszeichen aus einer Zeichenfolge in einem Array entfernen?

var splits = def.definition.Split(new string[] { @"; """ }, 
    StringSplitOptions.RemoveEmptyEntries); 

splits[0] = "good string"; 
splits[1] = "problem string \""; 

Kann jemand einen Weg vorschlagen, dass ich durch diese Anordnung laufen kann und die \" entfernen, die in vorhanden ist einige der Zeilen? Ist es möglich, dies zu tun auf dem Code, den ich bereits habe, der mir teilt?

Als Referenz hier ist der vollständige Code. Beachten Sie, dass die \ "ist nur ein Problem für alles nach Element [0 ] des Splits Array:

var splits = def.definition.Split(new string[] { @"; """ }, 
    StringSplitOptions.RemoveEmptyEntries); 
return new WebWordForm 
{ 
    definition = CultureInfo.CurrentCulture.TextInfo 
     .ToTitleCase(splits[0].ToLower()), 
    examples = splits.Skip(1).ToList(), 
    partOfSpeech = definition.partOfSpeech, 
    sourceId = 1, 
    synonyms = def.synonyms 
}; 

Hier einige Beispieldaten für die Definition:

def.definition = "the trait of lacking restraint or control; " + 
    "freedom from inhibition or worry; \"she danced with abandon\"" 

def.definition = "a feeling of extreme emotional intensity; " + 
    "\"the wildness of his anger\"" 

def.definition = "forsake, leave behind; " + 
    "\"We abandoned the old car in the empty parking lot\"" 

def.definition = "stop maintaining or insisting on; " + 
    "of ideas, claims, etc.; " + 
    "\"He abandoned the thought of asking for her " + 
    "hand in marriage\"; \"Both sides have to give up " + 
    "some calims in these negociations\"" 

def.definition = "give up with the intent of never claiming again; " + 
    "\"Abandon your life to God\"; \"She gave up her children to her ex" 

def.definition = "leave behind empty; move out of; " + 
    "\"You must vacate your office by tonight\"" 
+2

'; "? scheint wie ein seltsames Trennzeichen - können Sie einige Beispieldaten hinzufügen? Vielleicht gibt es einen effizienteren Weg, die Aufteilung zu tun und die Anführungszeichen gleichzeitig zu handhaben. –

Antwort

0

EDIT

basierend auf Beispieldaten ist wie eine effizientere Methode wäre schaut sagen sein sollte, Unterteilen mit Anführungszeichen als Trennzeichen:

Dann wäre das erste Element die Definition und die restlichen Elemente wären Beispiele.

Oder einfach auf "; " aufgeteilt und alles in Anführungszeichen umgeben ist ein Beispiel.


Linq ist für Abfrage nicht aktualisiert, so dass, wenn Sie die Einzelteile in Pläne aktualisieren wollen, dann benutzen Sie einfach eine for Schleife:

for(int i=0; i<splits.Length; i++ 
{ 
    splits[i] = splits[i].Replace(@"/"",""); 
} 

Wenn Sie Linq Projekt verwenden möchten die Array an ein neue Array (Kopieren der Zeiten und bei Bedarf ersetzen), dann können Sie verwenden:

splits = splits.Select(s => .Replace(@"\"","")) 
       .ToArray(); 

, die Sie mit dem Split inline können:

var splits = def.definition 
       .Split(new string[] { @"; """ }, StringSplitOptions.RemoveEmptyEntries); 
       .Select(s => s.Replace("\"","")); 

Wenn Sie Notwendigkeit das Endergebnis sein, ein Array, dann können Sie ToArray(), fügen aber eine Kopie des Arrays, dass Split erzeugt. Das mag für Sie insgesamt kein Problem sein, aber es ist etwas zu beachten.

+0

@D Stanley - Könnte dies als Teil der Zeile in der Frage hinzugefügt werden, wo ich splits? –

+0

Ja - siehe meine Bearbeitung. –

+0

@D Stanley - Vielen Dank. Können Sie Ich denke von meinem Code, dass ich es brauche, um ein Array zu sein, wie der Code hat: splits [0] Wenn es Ihnen nichts ausmacht, können Sie dies zu Ihrer Antwort hinzufügen, da ich ein wenig verwirrt war, als Sie sagte: "Mach eine Kopie" danke. –

0

Sie können splits = split.Select(s => s.Replace("\"", null)).ToArray()

+0

Ich aktualisierte die Frage, um ein wenig mehr Details zu geben. Könnte ich hinzufügen dies nach der Zeile bereits dort, die Spaltungen erzeugt? –

0

können Sie entweder iterieren durch das Array selbst und jedes Element ersetzt werden, indem die TrimEnd() Methode oder einfach LINQ verwenden, um einen Vorsprung zu schaffen und den Ersatz, der Art und Weise über das Select() Verfahren Griff:

// Loop approach 
for(var i = 0; i < splits.Length; i++) 
{ 
    splits[i] = splits[i].TrimEnd('\"'); 
} 

// LINQ projection 
splits = splits.Select(s => s.TrimEnd('\"')).ToArray(); 

Sie können see an example of this here .

Fortgeschrittene Szenarien

Wenn Sie benötigt etwas mehr advantaged Ersatz zu behandeln, können Sie einen regulären Ausdruck über die Regex.Replace() Methode in Betracht ziehen, aber für einfache Beschneiden, sollte dies ausreichend sein:

// Trim off any trailing quotes or spaces 
splits = splits.Select(s => Regex.Replace(s,@"[\s"]","")).ToArray(); 
Verwandte Themen