-1

実際、私はJavaの初心者です

いくつかの文字を置き換えた後に文字列を出力するプログラムの書き方を知りたいです。

例えば、

愛してる = 1 L0v3

冬が来る = W1nt3r 1s c0m1ng

交換したい:

  • A4
  • E3
  • I1
  • と。O_0

私はそのコードに固執しました:

import java.util.Scanner;
public class question2 {
    public static void main(String[] args) {
        Scaneer sc = new Scanner(System.in);
        System.out.println("Enter a string :");
        String original = sc.readLine();
        String replaced = "stuff";
        System.out.printlb(original + " = " + replaced);
    }
}
4

5 に答える 5

1

まさにあなたが望むことを行うメソッドString.replaceAll(String regex,String replacement)があります。

使用例:

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

これは大文字と小文字が区別されることに注意してください (したがって、a を置き換えても A は置き換えられません)。

より適切な正規表現を使用し、正規表現もキャッシュすることで、物事をより効率的にすることができますが、あなたが初心者であるため、ここでは深く掘り下げません。「Java キャッシュ正規表現」をググってみてください。

于 2013-10-06T20:02:42.303 に答える
1

で解決策を提案するユーザーもいますString#replaceAll()。それは機能しますが、置換する文字ごとに 1 回文字列を反復処理します。

配列をループして ( を使用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());
于 2013-10-06T20:25:11.917 に答える
0

stringで置換するため、置換は int ではなく char としてエンコードする必要があります。例として:

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

'3'が int ではなく char であることに注意してください。次に、置換するすべての値に対してこれを行います。

于 2013-10-06T20:03:06.910 に答える