【问题标题】:Store each substring into different variables将每个子字符串存储到不同的变量中
【发布时间】:2020-10-10 14:32:25
【问题描述】:

这就是我所拥有的

public class Main
{
    public static void main(String[] args) {
        String input = "Hello, Ciao, Salut";
        String[] substring = input.split(", ");
        for (String s : substring) {
            System.out.println(s); // works
        }
    }
}

如何将每个子字符串(HelloCiaoSalut)分配给不同的变量?

例如

String english = // first substring, "Hello"
String italian = // second substring, "Ciao"
...

【问题讨论】:

  • 您在将数组分配给单个变量时遇到什么问题?
  • 在所有使用硬编码索引来访问split() 的结果的方法中,您绝对应该事先检查length 以确保输入至少与您一样长期待...

标签: java string substring


【解决方案1】:

您可以拆分输入,也可以直接使用.substring()

拆分

String input = "Hello, Ciao, Salut";
String[] split= input.split(", ");
String english = split[0];
String ciao= split[1];
String salut= split[2];

但是,有一个错误 - ciaosalut 中会有一个额外的空格。您可以直接使用.substring() 来缓解此问题。

SUBSTRING

String english = input.substring(0,4);
String ciao = input.substring(7, 11);
String salut = input.substring(13);

产生:

Hello Ciao Salut

【讨论】:

    【解决方案2】:

    这里我们可以采用两种方法。

    1. 变量声明
    2. 列表声明

    第一种方法 如果我们必须将每个子字符串存储在不同的变量中,那么我们应该知道我们需要多少个变量。所以根据我们可以声明然后初始化。 但在大多数情况下,我们不知道需要多少个变量,因此我们不能在每种情况下都使用这种方法。

    第二种方法 在这里我们可以声明一个列表并在列表中添加值,我们也可以使用索引或迭代列表访问。

    enter code here
    String input = "Hello, Ciao, Salut";
    List<String> list = new ArrayList();
            String[] substring = input.split(", ");
            for (String s : substring) {
                list.add(s);
            }
    

    【讨论】:

      【解决方案3】:

      在您的情况下声明和启动变量的唯一方法是使用数组索引并将其分配给以下方式的变量 -

      String english = substring[0];
      String italian = substring[1];
      

      还有其他方法可以使用地图并将地图键保持为动态,并且可以针对它存储相应的值。 例如-

      Map<String, String> map = new HashMap<String, String>();
      for (int i=0;i<substring.length;i++) {
          map.put("language " + i, substring[i]);
      }
      

      地图 (K -> V) 将包含以下值 - 语言 1 -> 你好,语言 2 -> Ciao,语言 3 -> Salut

      【讨论】:

        【解决方案4】:

        我做的是

        String english = substring[0];
        String italian = substring[1];
        ...
        

        还有其他方法吗?

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-02-07
          • 1970-01-01
          • 2016-09-17
          • 2020-09-20
          • 1970-01-01
          • 1970-01-01
          • 2017-10-06
          相关资源
          最近更新 更多