source: esimerkit/2014k/live/live21/Siirra/Siirra.cs @ 1404

Revision 904, 2.7 KB checked in by anlakane, 3 years ago (diff)
Line 
1using System;
2using System.Text;
3using System.Linq;
4using System.Collections.Generic;
5
6/// @author  Antti-Jussi Lakanen, Vesa Lappalainen (alkuperäinen idea)
7/// @version 25.3.2014
8///
9/// <summary>
10/// Siirretään merkkijonosta merkkejä.
11/// </summary>
12public class Siirra
13{
14    /// <summary>
15    /// Kokeillaan poistamisen toimivuutta
16    /// </summary>
17    public static void Main()
18    {
19        StringBuilder jono = new StringBuilder("kolme miestä on saunassa");
20        String vokaalit = "aeiouyåäö";
21        int maara = 3;
22
23        String jonon3EnsimmaistaVokaalia = SiirraMerkit(jono, vokaalit, maara);
24
25        // poisettaisiin oei
26        // klm mestä on saunassa
27    }
28
29    /// <summary>
30    /// Poistetaan jonosta korkeintaan "maara" kpl joukon siirrettavat
31    /// merkkejä.
32    /// </summary>
33    /// <param name="jono">Mistä poistetaan/siirretään</param>
34    /// <param name="siirrettavat">Mitä merkkejä siirretään</param>
35    /// <param name="maara">Kuinka monta korkeintaan siirretään</param>
36    /// <returns>Siirretyt merkit.</returns>
37    /// <example>
38    /// <pre name="test">
39    ///  StringBuilder jono = new StringBuilder("kissa istuu");
40    ///  Siirra.SiirraMerkit(jono, "", 1) === ""; jono.ToString() === "kissa istuu";
41    ///  Siirra.SiirraMerkit(jono, "xyz", 1) === ""; jono.ToString() === "kissa istuu";
42    ///  Siirra.SiirraMerkit(jono, "i", 1) === "i"; jono.ToString() === "kssa istuu";
43    ///  Siirra.SiirraMerkit(jono, "s", 2) === "ss"; jono.ToString() === "ka istuu";
44    ///  Siirra.SiirraMerkit(jono, "aus", 3) === "asu"; jono.ToString() === "k itu";
45    ///  Siirra.SiirraMerkit(jono, "iu", 3) === "iu"; jono.ToString() === "k t";
46    ///  Siirra.SiirraMerkit(jono, " ", 3) === " "; jono.ToString() === "kt";
47    ///  Siirra.SiirraMerkit(jono, "tk", 3) === "kt"; jono.ToString() === "";
48    ///  Siirra.SiirraMerkit(jono, "tk", 3) === ""; jono.ToString() === "";
49    /// </pre>
50    /// </example>
51    public static String SiirraMerkit(StringBuilder jono, String siirrettavat, int maara)
52    {
53        int i = 0;
54        int lkm = 0; // löydettyjen / poistettujen kirjainten lukumäärä
55        StringBuilder tulos = new StringBuilder();
56        while (i < jono.Length && lkm < maara)
57        {
58            char merkki = jono[i];
59            if (siirrettavat.IndexOf(merkki) >= 0)
60            // if(siirrettavat.Contains(merkki)) // myös tämä kävisi
61            {
62                jono.Remove(i, 1);
63                tulos.Append(merkki);
64                lkm++;
65            }
66            else
67            {
68                i++;
69            }
70        }
71        return tulos.ToString();
72    }
73}
Note: See TracBrowser for help on using the repository browser.