C#-ban hogyan készítek olyan programot, ami kiszűri az ismétlődő karaktereket egy stringben?
A program célja, h egy stringben előforduló összes karakterből első előfordulásuk alapján készítsen egy új stringet. A probálkozásom:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp24
{
class Program
{
static string ismetlodo(string s,string o)
{
int db = 0;
for (int i = 0; i < s.Length; i++)
{
int j = 0;
while ((j<=db) && (s[i]!=o[j]))
{
j++;
}
if (j>db)
{
char[] t = o.ToCharArray();
t[db] = s[i];
o= new string(t);
db++;
}
}
return o;
}
static void Main(string[] args)
{
string s = "dfghssdhlgffzkjd", o="";
//int[] s = new int[10] { 1, 1, 2, 2, 2, 5, 5, 4, 6, 7 };
//int[] o = new int[10];
ismetlodo(s,o);
for (int i = 0; i < s.Length; i++)
{
Console.WriteLine(o[i]);
}
Console.ReadKey();
}
}
}
Így a program összeomlik (out of range). Minden segítséget nagyon köszönök.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
{
string ures = "";
string szo = "aaaa11235556477789000aaaBBBccAA";
foreach (char meg_nincs in szo) if (ures.IndexOf(meg_nincs) == -1) ures += meg_nincs;
Console.WriteLine(ures);
}
}
}
}
Nem sikerült megfejtenem miféle varázslás történik a kódodban, de az o paraméter például biztos, hogy felesleges.
Nagyfiús megoldás:
using System;
using System.Linq;
class Program
{
static void Main()
{
string str = "dfghssdhlgffzkjd";
Console.WriteLine($"{str} => {str.ToDistinct()}");
}
}
public static class StringExtensions
{
public static string ToDistinct(this string str) => new String(str.Distinct<char>().ToArray());
}
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!