3

こんにちは、このフォーラムは初めてです。私はJavaにかなり慣れていません。米国の単語を英国の単語に変換しようとしているので、米国の単語のいずれかを含む文を入力すると、出力は文になりますが、英国の単語に置き換えられます。これは私の試みです:

import javax.swing.JOptionPane;
public class PArraystest
{
    public static void main(String [] arg)
    {
    String[] wordUSA = {"Cell", "Elevator", "Fries", "Gasoline", "Faucet"};
    String[] wordUK = {"Mobile", "Lift", "Chips", "Petrol", "Tap"};
        String changeUK = "";
        String sent;
        sent = JOptionPane.showInputDialog("What name do you want to search for?");
        for (int i = 0; i < wordUSA.length; i++)
        { 
            if (sent.contains(wordUSA[i]))
        {

                sent.replace((wordUK)[i],(wordUSA)[i]);
            //break;
        }
        }
            //if (changeUK.equals(""))
            //System.out.println(" was not found.");
            //else
            System.out.println(sent);   
            }
        }
4

4 に答える 4

3

2つのこと:

  1. replaceから返された文字列をsent再度割り当てる必要があります。そうしsentないと、変更されません`。

  2. replaceメソッドはpublic String replace(char oldChar, char newChar)であるため、最初oldCharに米国の単語が来て、その後に英国の単語が続きます。

これは正しい行です:sent = sent.replace(wordUSA[i],wordUK[i]);

于 2013-08-24T15:28:44.227 に答える
0

Java には、国際化 (i18n) と呼ばれる、これ専用の機能のフレームワーク全体があります。

以下のサンプルは本来は生成用ですが、逆に実行する方法も考えられるので指摘したいと思います。

これを行う適切な方法を示すスニペットを次に示します。

http://docs.oracle.com/javase/tutorial/i18n/intro/after.html (以下のコードはすべて彼らのものであり、私のものではありません)

これを実行するには、サイトのリソース ファイル、またはサイトから以下に提供したバージョンが必要になることに注意してください。

import java.util.*;

public class I18NSample {

    static public void main(String[] args) {

        String language;
        String country;

        if (args.length != 2) {
            language = new String("en");
            country = new String("US");
        } else {
            language = new String(args[0]);
            country = new String(args[1]);
        }

        Locale currentLocale;
        ResourceBundle messages;

        currentLocale = new Locale(language, country);

        messages = ResourceBundle.getBundle("MessagesBundle", currentLocale);
        System.out.println(messages.getString("greetings"));
        System.out.println(messages.getString("inquiry"));
        System.out.println(messages.getString("farewell"));
    }
}

MessagesBundle.properties:

greetings = Hello.
farewell = Goodbye.
inquiry = How are you?

MessagesBundle_en_US.properties:

greetings = Hello.
farewell = Goodbye.
inquiry = How are you?

MessagesBundle_fr_FR.properties:

greetings = Bonjour.
farewell = Au revoir.
inquiry = Comment allez-vous?
于 2013-08-28T16:31:42.063 に答える
0

2 つの問題:

まず、置換された文字列を に戻す必要がありますsent

次に、replaceAll代わりに を使用する必要がありreplaceます。

于 2013-08-24T15:22:54.607 に答える
0

replace メソッドは、置換されたテキストを含む新しい String を返します。

//sent.replace((wordUK)[i],(wordUSA)[i]);
sent = sent.replace((wordUK)[i],(wordUSA)[i]);
于 2013-08-24T15:17:49.193 に答える