Diskuze: Replace

C# .NET .NET (C# a Visual Basic) Replace American English version English version

Avatar
Michael Švrček
Neregistrovaný
Avatar
Michael Švrček:

Ahoj chci se zeptat jak použít REPLACE tak aby to udělalo více znaků jak jeden třeba když napíšu : "ABC" tak z toho vytvori "123" mne to zatim funguje tak ze to z toho udela "AB3" Děkuju za rady..

 
Odpovědět 14.2.2014 6:56
Avatar
Nahoru Odpovědět 14.2.2014 7:26
Nesnáším {}, proto se jim vyhýbám.
Avatar
khoudy54
Člen
Avatar
khoudy54:

Omlouvám se nebyl jsem přihlášený a nevložil jsem kod takže tady to je

textbox2.text = textbox1.text.replace("A", "1")
textbox2.text = textbox1.text.replace("B", "2")
textbox2.text = textbox1.text.replace("C", "3")

(je to jen ukázka)

EDIT: úprava zdojáku

Editováno 14.2.2014 9:10
 
Nahoru Odpovědět 14.2.2014 9:09
Avatar
Odpovídá na khoudy54
Jakub Lásko[Saarix]:

Ty postupně přepisuješ ten samý string a proto ti ve výsledku zůstane jen poslední operace.
Udělej ty replace operace zvlášt na 1 proměnné typu string a pak ji pouze dej do textbox2.

string text = textbox1.text;

text = text.replace("A", "1");
atd...

textbox2.text = text;
Nahoru Odpovědět 14.2.2014 13:17
Časem je vše možné.
Avatar
1Pupik1989
Neregistrovaný
Avatar
1Pupik1989:

Nebo můžeš využít callbacku.

var text = 'ABC ABC BCA';

text = text.replace(/A|B|C/g,function(m){
  return ('ABC').indexOf(m);
});
 
Nahoru Odpovědět 14.2.2014 14:18
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Michael Švrček
Jan Vargovský:
internal static class Program
{
    [STAThread]
    private static void Main(string[] args)
    {
        string s = "devbook";

        Console.WriteLine(s);
        s = s.Replace(new char[] { 'd', 'o' }, new char[] { 'D', 'O' });
        Console.WriteLine(s);

        List<KeyValuePair<char, char>> replaceChars = new List<KeyValuePair<char, char>>();
        replaceChars.Add( new KeyValuePair<char,char>('D', 'd'));
        replaceChars.Add(new KeyValuePair<char, char>('O', 'o'));

        s = s.Replace(replaceChars);
        Console.WriteLine(s);
    }
}

public static class StringExtensions
{
    public static string Replace(this string s, char[] oldChar, char[] newChar)
    {
        if(oldChar.Length != newChar.Length)
            throw new ArgumentException("Different sizes of replace characters");

        StringBuilder sb = new StringBuilder(s);

        for (int i = 0; i < oldChar.Length; i++)
            sb.Replace(oldChar[i], newChar[i]);

        return sb.ToString();
    }

    public static string Replace(this string s, List<KeyValuePair<char, char>> chars)
    {
        StringBuilder sb = new StringBuilder(s);

        for (int i = 0; i < chars.Count; i++)
            sb.Replace(chars[i].Key, chars[i].Value);

        return sb.ToString();
    }
}

nebo kdyžtak úplně klasicky, ale bude to asi zdlouhavé to psát

string s = "devbook".Replace('A', '1').Replace('B', '2').Replace('C', '3');
Editováno 14.2.2014 15:34
 
Nahoru Odpovědět 14.2.2014 15:32
Avatar
khoudy54
Člen
Avatar
Odpovídá na Jakub Lásko[Saarix]
khoudy54:

Děkuju všem co odepsali na konec mi nevíce pomohl příspěvek od: Jakub[Saarix]

Editováno 14.2.2014 15:54
 
Nahoru Odpovědět 14.2.2014 15:54
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.