使用子串分割字符串

时间:2016-05-01 21:39:05

标签: java string substr

我正在制作一个简单的运动模拟器。在开始时,您必须输入两种格式的球队(CityName TeamName,例如芝加哥公牛队)。我使用两种方法从该初始名称获取城市名称和团队名称,以便我可以在不同的位置调用它们以获得更自然的输出。

struct foo
{
  void kill(std::map<int, foo>& m, int i)
  {
    m.erase(i);
    // careful! current object could have been destroyed by above statement and may not be valid anymore! Don't use it anymore!
  }
};

获取位置的第一种方法可以正常工作。获取团队名称的第二个每次都返回null。我无法弄清楚我在两者中做了哪些不同,为什么我得到不同的结果。

编辑:

以下是实施这些方法的一行:

public String getLocation(String teamName){
    String location = this.name.substring(0, this.name.indexOf(" "));
    return location;
}

public String getFirstName(String teamName){
    String name = this.name.substring(this.name.indexOf(" "));
    return name;
}

当“NYC Jets”和“Arizona Cardinals”出现时,它的输出是:

    System.out.println("The " + TeamX.getFirtName(TeamX.getName()) + " are visting from " + TeamX.getLocation(TeamX.getName()) + " to play the " + TeamY.getFirtName(TeamY.getName()) + " in " + TeamY.getLocation(TeamY.getName()) );

5 个答案:

答案 0 :(得分:2)

我认为问题是因为在函数中你在this.name调用子字符串而不是局部变量teamName

public String getLocation(String teamName){
   return teamName.substring(0, teamName.indexOf(" "));
}

public String getFirstName(String teamName){
    return teamName.substring(teamName.indexOf(" "));
}

答案 1 :(得分:2)

之间总是有空格吗?因为那时你可以使用好的ol&#39;分割

fullname.split(' ');

将返回一个2元素的字符串数组,第一个是城市,第二个是团队名称

噢,是的。在重新阅读问题后,我开始怀疑OP是否知道如何正确使用类...将类的属性传递给自己似乎很奇怪......

应该使用完整的团队名称初始化团队,该团队名称保存为实例变量,然后简单调用teamx.getFirstName(),它将在内部使用类变量...与getLocation相同

答案 2 :(得分:2)

首先,不使用您的函数参数。然后,您不会显示如何调用这些函数。这个名字&#39;似乎是一个可能在主类指令中发生变化的属性。顺便说一下,&#34; String name = this.name.sub ...&#34;即使它工作正常也不好看。

请尝试拆分功能:

public String getLocation(String teamName){
    return teamName.split(" ")[0];
}

public String getFirstName(){
    return teamName.split(" ")[1];
}

答案 3 :(得分:0)

团队名称之间是否总有空格?而且......你只指定了第一个索引?不是最后......

public String getFirstName(String teamName){
    String name = teamName;
    name =name.substring(name.indexOf(" "),name.length());
    // you for got the second parameter for the substring Thats why it returned null as you only found " ".

    return name;
}

我reedited-它......

问题是String原来是null ...如果你想在string中找到一个或多个索引,你应该在调用substring之前初始化它。

String name = teamName;

答案 4 :(得分:0)

我在之前的帖子中没有意识到子字符串只能处理一个参数,因为我只用了两个参数。像其他人所说的那样,name是一个null变量,需要先设置为teamName

    String name = teamName;
    name = this.name.substring(this.name.indexOf(" "))