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

两件事情:

  1. 您需要使用再次分配从返回的字符串replacesent否则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

replace 方法返回一个带有替换文本的新字符串:

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

两个问题:

首先,您应该将替换的字符串分配回sent.

其次,您应该使用replaceAll而不是replace.

于 2013-08-24T15:22:54.607 回答
0

在 Java 中有一个完整的功能框架,称为 internationalizaion (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 回答