using System;
using System.Text;
/// @author Vesa Lappalainen
/// @version 15.11.2021
/// <summary>
/// Kalevalasta täytyy laskea kunkin säkeen kolme ensimmäistä vokaalia.
/// </summary>
public class Siirra
{
/// <summary>
/// Kokeillaan poistamisen toimivuutta
/// </summary>
public static void Main()
{
StringBuilder jono = new StringBuilder("Mieleni minun tekevi, aivoni ajattelevi");
string vokaalit = "aeiouyåäö";
int maara = 3;
string jonon3EnsimmaistaVokaalia = SiirraKirjaimet(jono, vokaalit, maara);
Console.WriteLine("Jono: " + jono); // Mlni minun tekevi, aivoni ajattelevi
Console.WriteLine("3 vok: " + jonon3EnsimmaistaVokaalia); // iee
}
/// Poistetaan jonosta korkeintaan maxMaara kappaletta joukon siirrettavat kirjaimia.
/// </summary>
/// <param name="jono">mistä poistetaan</param>
/// <param name="siirrettavat">mitä kirjaimia poistetaan</param>
/// <param name="maxMaara">montako korkeintaan poistetaan</param>
/// <returns>siirretyt merkit</returns>
/// <example>
/// <pre name="test">
/// StringBuilder jono = new StringBuilder("kissa istuu");
/// SiirraKirjaimet(jono,"",1) === ""; jono =S= "kissa istuu";
/// SiirraKirjaimet(jono,"xyz",1) === ""; jono =S= "kissa istuu";
/// SiirraKirjaimet(jono,"aus",0) === ""; jono =S= "kissa istuu";
/// SiirraKirjaimet(jono,"i",1) === "i"; jono =S= "kssa istuu";
/// SiirraKirjaimet(jono,"s",2) === "ss"; jono =S= "ka istuu";
/// SiirraKirjaimet(jono,"aus",3) === "asu"; jono =S= "k itu";
/// SiirraKirjaimet(jono,"iu",3) === "iu"; jono =S= "k t";
/// SiirraKirjaimet(jono," ",1) === " "; jono =S= "kt";
/// SiirraKirjaimet(jono,"kt",5) === "kt"; jono =S= "";
/// SiirraKirjaimet(jono,"kt",5) === ""; jono =S= "";
/// </pre>
/// </example>
public static string SiirraKirjaimet(StringBuilder jono, string siirrettavat, int maxMaara)
{
// otetaan seuraava jonon kirjain
// ja jos se on siirrettavat joukossa,
// niin poistetaan kirjain jonosta
StringBuilder tulos = new StringBuilder();
int i = 0;
while (i < jono.Length && tulos.Length < maxMaara)
{
char merkki = jono[i];
if (siirrettavat.IndexOf(merkki) >= 0)
{
tulos.Append(merkki);
jono.Remove(i, 1);
}
else i++;
}
return tulos.ToString();
}
}