Click here to Skip to main content
15,867,704 members
Articles / Programming Languages / C# 4.0
Tip/Trick

L33t Tr4nsl4t0r (Leet Translator)

Rate me:
Please Sign up or sign in to vote.
5.00/5 (5 votes)
7 Jun 2011CPOL 45.7K   6   9
Code to change text to Leet

This is a little funny method that changes text to Leet[^] text. It is a C# version of a website[^] translator.

1 th1nk 1t 1s fun t0 us3 4nd m4k3s y0ur br41n w0rk t0 f1nd 0ut wh4t 1t s4ys.
1s 1t us3ful, m4yb3?
1s 1t funny, y3s :-)

To use it, just call the static method Translate that takes two parameters: a string that has to be translated to Leet and an integer that tells the degree of translating.

C#
// Original text
string myText = "Leet Translator";

// Translated text
string leetText = Leet.Translate(myText, 30);

// Output is: L33t Tr4nsl4t0r
Console.WriteLine(leetText);

// Do it again, and change degree to 100.
string leetText = Leet.Translate(myText, 100);

// Output is: £337 7®4|\|$£470®
Console.WriteLine(leetText);

// Leet class has an extension method to string class that allows us to
// Output is: L33t Tr4nsl4t0r
Console.WriteLine(myText.ToLeet());

Here is the Leet class:

C#
public static class Leet
{
    /// <summary>
    /// Translate text to Leet - Extension methods for string class
    /// </summary>
    /// <param name="text">Original text</param>
    /// <param name="degree">Degree of translation (0 - 100%)</param>
    /// <returns>Leet translated text</returns>
    public static string ToLeet(this string text, int degree = 30)
    {
      return Translate(text, degree);
    }
    /// <summary>
    /// Translate text to Leet
    /// </summary>
    /// <param name="text">Original text</param>
    /// <param name="degree">Degree of translation (0 - 100%)</param>
    /// <returns>Leet translated text</returns>
    public static string Translate(string text, int degree = 30)
    {
      // Adjust degree between 0 - 100
      degree = degree >= 100 ? 100 : degree <= 0 ? 0 : degree;
      // No Leet Translator
      if (degree == 0)
        return text;
      // StringBuilder to store result.
      StringBuilder sb = new StringBuilder(text.Length);
      foreach (char c in text)
      {
        #region Degree > 0 and < 17
        if (degree < 17 && degree > 0)
        {
          switch (c)
          {
            case 'e': sb.Append("3"); break;
            case 'E': sb.Append("3"); break;
            default: sb.Append(c); break;
          }
        }
        #endregion
        #region Degree > 16 and < 33
        else if (degree < 33 && degree > 16)
        {
          switch (c)
          {
            case 'a': sb.Append("4"); break;
            case 'e': sb.Append("3"); break;
            case 'i': sb.Append("1"); break;
            case 'o': sb.Append("0"); break;
            case 'A': sb.Append("4"); break;
            case 'E': sb.Append("3"); break;
            case 'I': sb.Append("1"); break;
            case 'O': sb.Append("0"); break;
            default: sb.Append(c); break;
          }
        }
        #endregion
        #region Degree > 32 and < 49
        else if (degree < 49 && degree > 32)
        {
          switch (c)
          {
            case 'a': sb.Append("4"); break;
            case 'e': sb.Append("3"); break;
            case 'i': sb.Append("1"); break;
            case 'o': sb.Append("0"); break;
            case 'A': sb.Append("4"); break;
            case 'E': sb.Append("3"); break;
            case 'I': sb.Append("1"); break;
            case 'O': sb.Append("0"); break;
            case 's': sb.Append("$"); break;
            case 'S': sb.Append("$"); break;
            case 'l': sb.Append("£"); break;
            case 'L': sb.Append("£"); break;
            case 'c': sb.Append("("); break;
            case 'C': sb.Append("("); break;
            case 'y': sb.Append("¥"); break;
            case 'Y': sb.Append("¥"); break;
            case 'u': sb.Append("µ"); break;
            case 'U': sb.Append("µ"); break;
            case 'd': sb.Append("Ð"); break;
            case 'D': sb.Append("Ð"); break;
            default: sb.Append(c); break;
          }
        }
        #endregion
        #region Degree > 48 and < 65
        else if (degree < 65 && degree > 48)
        {
          switch (c)
          {
            case 'a': sb.Append("4"); break;
            case 'e': sb.Append("3"); break;
            case 'i': sb.Append("1"); break;
            case 'o': sb.Append("0"); break;
            case 'A': sb.Append("4"); break;
            case 'E': sb.Append("3"); break;
            case 'I': sb.Append("1"); break;
            case 'O': sb.Append("0"); break;
            case 'k': sb.Append("|{"); break;
            case 'K': sb.Append("|{"); break;
            case 's': sb.Append("$"); break;
            case 'S': sb.Append("$"); break;
            case 'g': sb.Append("9"); break;
            case 'G': sb.Append("9"); break;
            case 'l': sb.Append("£"); break;
            case 'L': sb.Append("£"); break;
            case 'c': sb.Append("("); break;
            case 'C': sb.Append("("); break;
            case 't': sb.Append("7"); break;
            case 'T': sb.Append("7"); break;
            case 'z': sb.Append("2"); break;
            case 'Z': sb.Append("2"); break;
            case 'y': sb.Append("¥"); break;
            case 'Y': sb.Append("¥"); break;
            case 'u': sb.Append("µ"); break;
            case 'U': sb.Append("µ"); break;
            case 'f': sb.Append("ƒ"); break;
            case 'F': sb.Append("ƒ"); break;
            case 'd': sb.Append("Ð"); break;
            case 'D': sb.Append("Ð"); break;
            default: sb.Append(c); break;
          }
        }
        #endregion
        #region Degree > 64 and < 81
        else if (degree < 81 && degree > 64)
        {
          switch (c)
          {
            case 'a': sb.Append("4"); break;
            case 'e': sb.Append("3"); break;
            case 'i': sb.Append("1"); break;
            case 'o': sb.Append("0"); break;
            case 'A': sb.Append("4"); break;
            case 'E': sb.Append("3"); break;
            case 'I': sb.Append("1"); break;
            case 'O': sb.Append("0"); break;
            case 'k': sb.Append("|{"); break;
            case 'K': sb.Append("|{"); break;
            case 's': sb.Append("$"); break;
            case 'S': sb.Append("$"); break;
            case 'g': sb.Append("9"); break;
            case 'G': sb.Append("9"); break;
            case 'l': sb.Append("£"); break;
            case 'L': sb.Append("£"); break;
            case 'c': sb.Append("("); break;
            case 'C': sb.Append("("); break;
            case 't': sb.Append("7"); break;
            case 'T': sb.Append("7"); break;
            case 'z': sb.Append("2"); break;
            case 'Z': sb.Append("2"); break;
            case 'y': sb.Append("¥"); break;
            case 'Y': sb.Append("¥"); break;
            case 'u': sb.Append("µ"); break;
            case 'U': sb.Append("µ"); break;
            case 'f': sb.Append("ƒ"); break;
            case 'F': sb.Append("ƒ"); break;
            case 'd': sb.Append("Ð"); break;
            case 'D': sb.Append("Ð"); break;
            case 'n': sb.Append("|\\|"); break;
            case 'N': sb.Append("|\\|"); break;
            case 'w': sb.Append("\\/\\/"); break;
            case 'W': sb.Append("\\/\\/"); break;
            case 'h': sb.Append("|-|"); break;
            case 'H': sb.Append("|-|"); break;
            case 'v': sb.Append("\\/"); break;
            case 'V': sb.Append("\\/"); break;
            case 'm': sb.Append("|\\/|"); break;
            case 'M': sb.Append("|\\/|"); break;
            default: sb.Append(c); break;
          }
        }
        #endregion
        #region Degree < 100 and > 80
        else if (degree > 80 && degree < 100)
        {
          switch (c)
          {
            case 'a': sb.Append("4"); break;
            case 'e': sb.Append("3"); break;
            case 'i': sb.Append("1"); break;
            case 'o': sb.Append("0"); break;
            case 'A': sb.Append("4"); break;
            case 'E': sb.Append("3"); break;
            case 'I': sb.Append("1"); break;
            case 'O': sb.Append("0"); break;
            case 's': sb.Append("$"); break;
            case 'S': sb.Append("$"); break;
            case 'g': sb.Append("9"); break;
            case 'G': sb.Append("9"); break;
            case 'l': sb.Append("£"); break;
            case 'L': sb.Append("£"); break;
            case 'c': sb.Append("("); break;
            case 'C': sb.Append("("); break;
            case 't': sb.Append("7"); break;
            case 'T': sb.Append("7"); break;
            case 'z': sb.Append("2"); break;
            case 'Z': sb.Append("2"); break;
            case 'y': sb.Append("¥"); break;
            case 'Y': sb.Append("¥"); break;
            case 'u': sb.Append("µ"); break;
            case 'U': sb.Append("µ"); break;
            case 'f': sb.Append("ƒ"); break;
            case 'F': sb.Append("ƒ"); break;
            case 'd': sb.Append("Ð"); break;
            case 'D': sb.Append("Ð"); break;
            case 'n': sb.Append("|\\|"); break;
            case 'N': sb.Append("|\\|"); break;
            case 'w': sb.Append("\\/\\/"); break;
            case 'W': sb.Append("\\/\\/"); break;
            case 'h': sb.Append("|-|"); break;
            case 'H': sb.Append("|-|"); break;
            case 'v': sb.Append("\\/"); break;
            case 'V': sb.Append("\\/"); break;
            case 'k': sb.Append("|{"); break;
            case 'K': sb.Append("|{"); break;
            case 'r': sb.Append("®"); break;
            case 'R': sb.Append("®"); break;
            case 'm': sb.Append("|\\/|"); break;
            case 'M': sb.Append("|\\/|"); break;
            case 'b': sb.Append("ß"); break;
            case 'B': sb.Append("ß"); break;
            case 'q': sb.Append("Q"); break;
            case 'Q': sb.Append("Q¸"); break;
            case 'x': sb.Append(")("); break;
            case 'X': sb.Append(")("); break;
            default: sb.Append(c); break;
          }
        }
        #endregion
        #region Degree 100
        else if (degree > 99)
        {
          switch (c)
          {
            case 'a': sb.Append("4"); break;
            case 'e': sb.Append("3"); break;
            case 'i': sb.Append("1"); break;
            case 'o': sb.Append("0"); break;
            case 'A': sb.Append("4"); break;
            case 'E': sb.Append("3"); break;
            case 'I': sb.Append("1"); break;
            case 'O': sb.Append("0"); break;
            case 's': sb.Append("$"); break;
            case 'S': sb.Append("$"); break;
            case 'g': sb.Append("9"); break;
            case 'G': sb.Append("9"); break;
            case 'l': sb.Append("£"); break;
            case 'L': sb.Append("£"); break;
            case 'c': sb.Append("("); break;
            case 'C': sb.Append("("); break;
            case 't': sb.Append("7"); break;
            case 'T': sb.Append("7"); break;
            case 'z': sb.Append("2"); break;
            case 'Z': sb.Append("2"); break;
            case 'y': sb.Append("¥"); break;
            case 'Y': sb.Append("¥"); break;
            case 'u': sb.Append("µ"); break;
            case 'U': sb.Append("µ"); break;
            case 'f': sb.Append("ƒ"); break;
            case 'F': sb.Append("ƒ"); break;
            case 'd': sb.Append("Ð"); break;
            case 'D': sb.Append("Ð"); break;
            case 'n': sb.Append("|\\|"); break;
            case 'N': sb.Append("|\\|"); break;
            case 'w': sb.Append("\\/\\/"); break;
            case 'W': sb.Append("\\/\\/"); break;
            case 'h': sb.Append("|-|"); break;
            case 'H': sb.Append("|-|"); break;
            case 'v': sb.Append("\\/"); break;
            case 'V': sb.Append("\\/"); break;
            case 'k': sb.Append("|{"); break;
            case 'K': sb.Append("|{"); break;
            case 'r': sb.Append("®"); break;
            case 'R': sb.Append("®"); break;
            case 'm': sb.Append("|\\/|"); break;
            case 'M': sb.Append("|\\/|"); break;
            case 'b': sb.Append("ß"); break;
            case 'B': sb.Append("ß"); break;
            case 'j': sb.Append("_|"); break;
            case 'J': sb.Append("_|"); break;
            case 'P': sb.Append("|°"); break;
            case 'q': sb.Append("¶"); break;
            case 'Q': sb.Append("¶¸"); break;
            case 'x': sb.Append(")("); break;
            case 'X': sb.Append(")("); break;
            default: sb.Append(c); break;
          }
        }
        #endregion
      }
      return sb.ToString(); // Return result.
    }
}

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Software Developer Miralix
Denmark Denmark
Has worked as a programmer since 1999, starting with C++/MFC, Java, PHP and MySQL. Now it is all about C# (my favorite programming language), MS SQL, Azure and Xamarin (iOS/Android/WP8)

My primary work is to create applications that interacts with PABC/PBX, Microsoft Lync / UCMA.

Comments and Discussions

 
General7h1$ 1$ jµ$7 $0 (00£ 7h4n|{$! Pin
Seth00716-Jun-11 5:27
Seth00716-Jun-11 5:27 
GeneralRe: 1'm gl4d y0u l1k3 1t :-) Pin
Kim Togo16-Jun-11 5:30
professionalKim Togo16-Jun-11 5:30 
GeneralRe: Check out <a href="http://www.google.com/webhp?hl=xx-hacker"... Pin
Kim Togo16-Jun-11 5:33
professionalKim Togo16-Jun-11 5:33 
GeneralReason for my vote of 5 I just like it Pin
FDW7-Jun-11 8:13
FDW7-Jun-11 8:13 
GeneralRe: Thanks :-) Pin
Kim Togo7-Jun-11 9:54
professionalKim Togo7-Jun-11 9:54 
GeneralWhen will you show us the decoder? or will that just deleet ... Pin
FDW7-Jun-11 7:24
FDW7-Jun-11 7:24 
GeneralRe: Decoding Leet text will not give the original text back. Cha... Pin
Kim Togo7-Jun-11 10:00
professionalKim Togo7-Jun-11 10:00 
GeneralReason for my vote of 5 Good work Pin
Toniyo Jackson7-Jun-11 1:19
Toniyo Jackson7-Jun-11 1:19 
GeneralRe: Thanks Toniyo. It seams that you vote has gone way. Pin
Kim Togo7-Jun-11 10:01
professionalKim Togo7-Jun-11 10:01 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.