如何将字母改为数字

时间:2013-10-06 19:59:13

标签: java

实际上我是java的初学者

我只是想知道如何打印一个同时显示带字母单词的程序

例如

  

我爱= 1 L0v3

     

冬天来了= W1nt3r 1s c0m1ng

这是我必须改变的(A = 4,E = 3,I = 1,O = 0,)

import java.util.scaneer;

public class question2 {

public static void main(String[]args)
{

  Scaneer keyb = new Scanner(System.in);
  System.out.println("Enter a string :");

  int
  String letter = A = 4, E = 3, I = 1, O = 0;

5 个答案:

答案 0 :(得分:1)

方法String.replaceAll(String regex,String replacement)完全符合您的要求。

使用示例:

String word = "Winter";
word = word.replaceAll("i","1");
System.out.println(word); //Outputs 'W1nter'.

请记住,这是区分大小写的(因此替换a不会替换A)。

通过使用更好的正则表达式和缓存正则表达式可以提高效率,但我不会深入研究,因为你是初学者。随意google“java cache regex”。

答案 1 :(得分:1)

这将替换所有字符,忽略大写和小写。 (?i)是不区分大小写的正则表达式。

String convertMe = "winter is coming";

convertMe = convertMe.replaceAll("(?i)a", "4")
            .replaceAll("(?i)e", "3")
            .replaceAll("(?i)i", "1")
            .replaceAll("(?i)o", "0");

System.out.println(convertMe); //Prints: w1nt3r 1s c0m1ng

答案 2 :(得分:1)

有些用户建议使用String#replaceAll()的解决方案。它可以工作,但你将每个字符迭代一次String来替换。

我建议你循环使用数组(使用String.toCharArray())并使用StringBuilder构建一个新的字符串。

Map<Character, Character> map = new HashMap<Character, Character>(); // <-- Store the mapping into a map;
map.put('3','e');
map.put('4','a');
...

//Then, create a StringBuilder. It allows you to build a String...
StringBuilder sb = new StringBuilder();

//Then loop on your String : 
for(char c :  yourString.toCharArray()) {
  if(map.containsKey(c)) {
    sb.append(map.get(c));
  } else {
    sb.append(c);
  }
}

System.out.println("the result is "+sb.toString());

答案 3 :(得分:0)

您应该将替换编码为字符,而不是整数,因为您将在字符串中替换它们。举个例子:

System.out.println("Hello".replace('e', '3')); // Will print "H3llo"

注意'3'是一个char,而不是int。然后,您将对要替换的所有值执行此操作。

答案 4 :(得分:0)

对于 Java 8 或更高版本:

import java.util.Map;
import java.util.HashMap;

class Main {
    public static void main(String[] args) {
        Map<Character, Character> map = new HashMap<>() {{
            put('A', '4');
            put('E', '3');
            put('I', '1');
            put('O', '0');
        }};
        String original = "WINTER IS COMING";
        String replaced = map.entrySet().stream().reduce(original, (acc, e) -> acc.replace(e.getKey(), e.getValue()), (s1, s2) -> s1 + s2);
        System.out.println(replaced); // W1NT3R 1S C0M1NG
    }
}