带字符串参数的Java构造函数

带字符串参数的Java构造函数,java,constructor,Java,Constructor,如何从字符串参数中提取属性值 public class Pays{ public Pays(String paysDescriptions) { //implementation } } pays= new Pays("p1:Europe:France, p2:Amerique:Canada"); 编辑: public Pays(String paysDescriptions) { String[] split_1 = paysDescriptions.spl

如何从字符串参数中提取属性值

public class Pays{
public Pays(String paysDescriptions) {
        //implementation
    }

}
pays= new Pays("p1:Europe:France, p2:Amerique:Canada");
编辑:

public Pays(String paysDescriptions) {
    String[] split_1 = paysDescriptions.split(",");
    for (String split : split_1) {
        String[] split_2 = split.split(":");
        for (String sp : split_2) {
            System.out.println(sp); // use sp.trim() if spaces after comma
                                    // not required.
        }
    }
}
下面我给了一些从未使用过这种构造函数的人一个答案(比如我:p),他们可能需要一些解释。

你应该尝试使用API

  • 使用逗号(
    )将参数
    paysDescriptions
    打断为
    regex
    ,然后
  • 使用冒号(
    )将单个项目拆分为
    regex
  • 示例:

    public Pays(String paysDescriptions) {
        String[] split_1 = paysDescriptions.split(",");
        for (String split : split_1) {
            String[] split_2 = split.split(":");
            for (String sp : split_2) {
                System.out.println(sp); // use sp.trim() if spaces after comma
                                        // not required.
            }
        }
    }
    

    我误解了逻辑,因为这是我第一次看到这种构造函数。我只有单元测试类,我应该为源代码实现代码。因此,我使用了一个
    Map
    来分割参数,然后我可以访问我的类的各种属性

    Map<String, String[]> paysMap = new HashMap<String, String[]>(); 
        public Pays(String paysDescriptions) {
    
            String s = paysDescriptions;
            String[] pairs = s.split(",");
            for (int i=0;i<pairs.length;i++) {
                String pair = pairs[i];
                String[] keyValue = pair.split(":");
                paysMap.put(String.valueOf(keyValue[0]),new String[]  {String.valueOf(keyValue[1]), String.valueOf(keyValue[2])});
    
            }
        }
    
    Map paysMap=newhashmap();
    公共支付(字符串支付说明){
    字符串s=付款说明;
    字符串[]对=s.split(“,”);
    
    对于(int i=0;iYou只是与字符串中的逗号混淆。它是一个包含在一组引号中的单个字符串,因此构造函数只有一个参数。您到底不明白什么?您正在创建一个新的
    Pays
    对象,其中包含一个字符串参数
    paysDescriptions
    =“p1:欧洲:法国,p2:美洲:加拿大”
    @MadMatts感谢您的评论。我不明白如何访问pays属性。我有testCase,应该创建类implementation@JunedAhsan是的,我知道这只是一个字符串,但我不明白如何操作它,因为它们是另一个函数,具有as参数,例如:
    p1
    as
    paysId
    欧洲
    作为
    国家
    感谢您的回答这正是我所做的..我使用了哈希图。我很高兴您发现它很有用。请接受一个答案,这样问题就不会以开放状态出现。