字到符号转换器

时间:2016-01-01 01:29:00

标签: java string

我想创建一个系统,当写下一个字母(例如:一个时,它会将其转换为符号(例如:ԅ )。

我该怎么做?我知道这看起来很简单,但我非常非常非常进入编程,我只能做一个简单的日历或计算器。

我试图独自完成,但无处可去。我输入一个完整的单词,但它只打印第一个字母而不是单词,其中包含4+。例如,我输入 aura ,但只打印ԅ

非常感谢你们所有人!我最终做到了!!!!

5 个答案:

答案 0 :(得分:3)

使用string = string.replace("a", "ԅ");
其中string是给定的单词(在您的情况下, aura )。

答案 1 :(得分:2)

我使用for循环读取一次提供一个字母的字符串然后创建一个新字符串"翻译"每封信。

这里有一些快速代码:

Scanner i = new Scanner(System.in);
System.out.print("Enter string:");
String start = i.next();
int len = start.length;
String end = "";

for (int a = 0, a<len, a++) {
    if (start.Charat(a) == "a") {
        end = end.append(ԅ)
    } etc...
}

我只是把它放在了我的头顶,如果你给我更多的替换,我会尝试制作一个有效的版本:)

答案 2 :(得分:2)

您好@EpicJavaNoob并欢迎使用StackOverflow。

您可以在字符串上使用Mapreplace()函数来解决您的问题。


您必须在程序中创建此类。

public class MyReplacer {
    private static final Map<Character, Character> map = new HashMap<Character, Character>();
    static { // the static block is used to instantiate the Map once for all
        map.put('a' , '\u2026');
        map.put('b', '+');
    }

    public static String encode(String stringToEncode) {
        // for each entry in the hashmap, we replace the character by his corresponding key
        for (Map.Entry<Character, Character> entry : map.entrySet()) {
            stringToEncode = stringToEncode.replace(entry.getKey(), entry.getValue());
        }
        return stringToEncode;
    }
}


然后在您的代码中,您可以这样使用上一课:

public static void main(String[] args) {
    String str = "aura";
    String encodedStr = MyReplacer.encode(str);
}



Map用于将键与值相关联。



我同意这不是你能找到的简单解决方案,但这就是你如何学习编码,查看其他人编写的代码并尝试理解它是如何工作的,以及为什么它以这种方式编写。< / p>

答案 3 :(得分:2)

在这种情况下,您可以使用HashMap<Character, Character>

如果你不知道那是什么,它基本上就是一本“字典”。你可以在你的情况下像这样HashMap

a -> ԅ
b -> !
c -> @
d -> #

注意:上面不是真正的代码,只是一个直观的表示!而且我不知道你的符号是什么意思以及如何输入它们,所以我使用了普通符号

请参阅?这真的是一本字典。当你寻找“a”时,你会得到“ԅ”,当你寻找“b”时,你会得到“!”等等。你现在得到它吗?

好的,现在让我们看看代码

HashMap<Character, Character> characterMap = new HashMap<> (); //Create a new HashMap
characterMap.put ('a', 'ԅ'); // Put an entry in the "dictionary"
characterMap.put ('b', '!');
//and so on... I am lazy

现在假设您能够获取用户输入并将其存储在名为input的字符串中。就像安东尼的代码一样,你这样做:

for (Map.Entry<Character, Character> entry : map.entrySet()) {
    input = input.replace(entry.getKey(), entry.getValue());
}

这基本上是这样说的,

Go to find every entry in the dictionary. 
For each entry,
    Store it in the "entry" variable
    Replace all the occurrences of entry's key by entry's value

答案 4 :(得分:0)

最好的方法是使用转换表对Translator类进行编码:

编辑:在与AnthonyRaymond的建议达成一致之后,我选择了Map替代品而不是char[](我的第一个想法)。

public class Translator
{
    private Map<Character,Character> table=createTable();

    public String translate(String input)
    {...}
}

要构造表,您必须只设置显式映射(以便将表减少到最小大小):

private Map<Character,Character> createTable()
{
    Map<Character,Character> table=new HashMap<Character,Character>();

    // Set the explicit mappings:
    table.put('a', 'ԅ');
    table.put('b', ...);

    return table;
}

翻译rutine必须首先索引表格,如果找不到该字符,请选择输入字符(为了不翻译空白,换行符和其他不可翻译的字符):

public String translate(String input)
{
    StringBuilder stb=new StringBuilder(input.length());
    for (int i=0;i<input.length();i++)
    {
        char inputChar=input.charAt(i);
        Character outputChar=table.get(inputChar);
        if (outputChar==null)
        {
            outputChar=inputChar;
        }
        stb.append(outputChar);
    }
    return stb.toString();
}