Domanda

Ho un problema con il mio codice.Non so cosa sto sbagliando.Voglio che l'utente scriva qualche frase e quindi il programma dovrebbe dividere la frase scritta in singole parole dove uso ToUpper sui primi caratteri di ogni parola in array e poi unisco di nuovo insieme senza spazi.

il mio codice è:

    static void Skrci(string stavek)
    {
        string[] p;
        p = stavek.Split(' ');  // polje separatov

        for (int i = 0; i < p.Length; i++)
        {
            if (p[i].Length > 0)
            {
                char zacetnica = Char.ToUpper(p[i][0]);
                p[i] = p[i].Remove(0, 1);
                p[i] = p[i].Insert(0, zacetnica.ToString());
            }
        }
        stavek = string.Join(" ", p);
    }

    static void Main(string[] args)
    {
        string[] p = null;
        Console.Write("Vpiši nek stavek: ");
        string stavek = Console.ReadLine();
        Skrci(stavek);
        Console.WriteLine(stavek);
        Console.ReadKey(true);
    }

Ho provato ad entrare per vedere se riesco a vedere cosa c'è che non va ma non lo so.

È stato utile?

Soluzione

Dovresti passare la stringa in modo che funzioni come riferimento, non come valore.Usa la parola chiave ref per questo.

Esempio:

static void Skrci(ref string stavek)
    {
        string[] p;
        p = stavek.Split(' ');  // polje separatov

        for (int i = 0; i < p.Length; i++)
        {
            if (p[i].Length > 0)
            {
                char zacetnica = Char.ToUpper(p[i][0]);
                p[i] = p[i].Remove(0, 1);
                p[i] = p[i].Insert(0, zacetnica.ToString());
            }
        }
        stavek = string.Join(" ", p);
    }

    static void Main(string[] args)
    {
        string[] p = null;
        Console.Write("Vpiši nek stavek: ");
        string stavek = Console.ReadLine();
        Skrci(ref stavek);
        Console.WriteLine(stavek);
        Console.ReadKey(true);
    }

Altri suggerimenti

Il tuo problema è che la tua funzione Skrci non restituisce un valore (o aggiorna il suo parametro (per riferimento))

Ecco una soluzione rapida

static string Skrci(string stavek)
{
    string[] p;
    p = stavek.Split(' ');  // polje separatov

    for (int i = 0; i < p.Length; i++)
    {
        if (p[i].Length > 0)
        {
            char zacetnica = Char.ToUpper(p[i][0]);
            p[i] = p[i].Remove(0, 1);
            p[i] = p[i].Insert(0, zacetnica.ToString());
        }
    }
    return string.Join(" ", p);
}

static void Main(string[] args)
{
    string[] p = null;
    Console.Write("Vpiši nek stavek: ");
    string stavek = Console.ReadLine();
    stavek = Skrci(stavek);
    Console.WriteLine(stavek);
    Console.ReadKey(true);
}

Un modo semplice per convertire la tua stringa in Camel Case, è creare tu stesso il seguente metodo di estensione:

public static String ToCamelCase(this String source)
{
    return CultureInfo.CurrentCulture.TextInfo.ToTitleCase(source.ToLower());
}

(credito a https://stackoverflow.com/a/1168346/310001 )

Puoi quindi fare semplicemente così:

string stavek = Console.ReadLine().ToCamelCase();

Modifica:
E se vuoi rimuovere gli spazi tra le parole, puoi ovviamente aggiungere semplicemente .Replace(" ", "") alla fine.

Se ti capisco bene, questo è quello che stai cercando di fare:

    static string Skrci(string stavek)
    {
        string[] p;
        p = stavek.Split(' ');  // polje separatov

        for (int i = 0; i < p.Length; i++)
        {
            if (p[i].Length > 0)
            {
                char zacetnica = Char.ToUpper(p[i][0]);
                p[i] = p[i].Remove(0, 1);
                p[i] = p[i].Insert(0, zacetnica.ToString());
            }
        }
        stavek = string.Join(String.Empty, p);

        return stavek;
    }

    static void Main(string[] args)
    {
        string[] p = null;
        Console.Write("Vpiši nek stavek: ");
        string stavek = Console.ReadLine();
        stavek = Skrci(stavek);
        Console.WriteLine(stavek);
        Console.ReadKey(true);
    }

Se vuoi concatenare le stringhe senza lo spazio bianco, non usare la stringa. Unisciti con "" come separatore.Inoltre, non stai stampando il risultato del metodo, ma solo la tua stringa di input.

 static string Skrci(string stavek)
    {
        string[] p;
        p = stavek.Split(' ');  // polje separatov

        for (int i = 0; i < p.Length; i++)
        {
            if (p[i].Length > 0)
            {
                char zacetnica = Char.ToUpper(p[i][0]);
                p[i] = p[i].Remove(0, 1);
                p[i] = p[i].Insert(0, zacetnica.ToString());
            }
        }
        stavek = string.Join("", p);

        return stavek;
    }

    static void Main(string[] args)
    {
        string[] p = null;
        Console.Write("Vpiši nek stavek: ");
        string stavek = Console.ReadLine();
        stavek = Skrci(stavek);
        Console.WriteLine(stavek);
        Console.ReadKey(true);
    }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top