Laden...

String für Suche zerlegen mit beachtung der Anführunsgzeichen

Erstellt von steschu vor 13 Jahren Letzter Beitrag vor 13 Jahren 932 Views
steschu Themenstarter:in
24 Beiträge seit 2009
vor 13 Jahren
String für Suche zerlegen mit beachtung der Anführunsgzeichen

Hi,

Kennt jemand eine elegante Lösung wie man einen String, z.B.

BegriffA BegriffB "Zusammengesetzter Begriff" BegriffC

in ein Array zerlegt, also:

[0] = BegriffA
[1] = BegriffB
[2] = Zusammengesetzter Begriff
[3] = BegriffC

Viele Grüße,
Stephan

2.891 Beiträge seit 2004
vor 13 Jahren

Guckst du entweder in CommandLine: Argumentenstring zerlegen oder wie es vom Parser für Kommandozeilenparameter (CommandLineArguments) realisiert wurde.

Gruß,
dN!3L

Gelöschter Account
vor 13 Jahren

so würde es auch gehen:

    public static class MyExtensions
    {
        public static IEnumerable<string> MySpecialExtractor(this string input)
        {
            StringBuilder yieldedResult = new StringBuilder();
            bool isInQuotes = false;
            foreach (char c in input)
            {
                if (c == ' ' && !isInQuotes)
                {
                    yield return yieldedResult.ToString();
                    yieldedResult.Clear();
                }
                else if (c == '"') isInQuotes = !isInQuotes;
                else yieldedResult.Append(c);
            }
            if (yieldedResult.Length > 0) yield return yieldedResult.ToString();
        }
    }

verwendung:

string testString = "asdf fdas \"inner hehehe\" outer";
string[] result = testString.MySpecialExtractor().ToArray();
steschu Themenstarter:in
24 Beiträge seit 2009
vor 13 Jahren

Vielen Dank, damit klappt's!

363 Beiträge seit 2007
vor 13 Jahren

Hm, geht nicht auch ganz einfach sowas hier?


string tst = "dwefwe 2 2232 \"fw\"";
string[] tstarray = tst.Split(new char[] {' ', '\"'});

Enthält dann halt unter Umständen leere Einträge im Array, aber die kann man ja rauslöschen.

Gruß Cookiie

"Hail to the King, Baby!"

Gelöschter Account
vor 13 Jahren

nein das geht nicht. Siehe anforderung und teststring vom threadersteller.

363 Beiträge seit 2007
vor 13 Jahren

*ditsch*

ja jetzt seh ich's auch. Soll ja dann nicht gesplittet werden, wenn von " eingschlossen.

"Hail to the King, Baby!"