【问题标题】:Cannot convert String[] to string When using String.split [duplicate]使用 String.split 时无法将 String[] 转换为字符串 [重复]
【发布时间】:2019-09-04 06:06:10
【问题描述】:

我在 String 中有一个变量。现在我需要从字符串中取出该变量并将其拆分,以便它只取出该部分并将其存储在一个新变量中,这样我就可以只打印该变量。 (如果是粗略的解释,我很抱歉,我是新手,措辞仍然很棘手)

fisrtName 是用户输入

String FIRST_SENTENCE = " There once was a person named " + firstName + " who lived in a city called " + city + ". ";

//还有其他字符串和变量,但这基本上是重要的部分

String nameOne = FIRST_SENTENCE.split(firstName);
System.out.println(nameOne);

我只需要 println 输出 (firstName) aka (userInput)

【问题讨论】:

  • 如果您要打印firstName,为什么还需要nameOne
  • 为什么不能使用System.out.println(firstName);
  • 当你 split 在某个分隔符(你的“名字”)上时,你不会得到那个分隔符,只有它周围的部分(“那里......命名”和“谁...... . 叫...")

标签: java arrays string indexing split


【解决方案1】:

拆分

返回一个数组而不是字符串。您必须将拆分的结果存储在一个 Array.

试试这个:

String[] nameOne = FIRST_SENTENCE.split(firstName);

【讨论】:

    【解决方案2】:

    由于您已经可以访问userInput,您可以简单地使用下面的代码来打印它。

    System.out.println(firstName);

    如果需要从生成的String中获取userInput,请使用此方法。

    private String getFirstName(String firstSentence, String leftWord, String rightWord)
    {
        return firstSentence.substring(firstSentence.indexOf(leftWord) + leftWord.length(), 
            firstSentence.indexOf(rightWord));
    }
    
    String nameOne = getFirstName(FIRST_SENTENCE, "named", "who");
    System.out.println(nameOne);
    

    【讨论】:

      【解决方案3】:

      您收到错误是因为您尝试将arrayStrings 分配给String

      String nameOne = FIRST_SENTENCE.split(firstName); // Illegal
      

      split 方法通过将该字符串拆分为给定正则表达式的匹配项来计算字符串数组。 您可以像这样修改代码以使其合法:

      String[] splits = FIRST_SENTENCE.split(firstName);
      

      这将为您提供一个 length 2 数组,其中包含两个值,如下所示:[ There once was a person named , who lived in a city called <your city name here>. ] 请注意,如果您打算从拆分中使用它,则通过执行此不必要的拆分不会获得 firstName 的值结果。您已经有一个方便的名字,请改用它。

      【讨论】:

        【解决方案4】:
        String[] nameOne = FIRST_SENTENCE.split(firstName);
        

        首先 split() 方法总是会产生 String[]。 通过在名字上使用 split() 方法,您将永远无法打印名字,它所做的是打破名字周围的字符串,因此,输出将是长度为 2 的字符串 [] 值:

        [ There once was a person named, who lived in a city called <city>. ]
        

        【讨论】:

          猜你喜欢
          • 2021-04-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-05-29
          • 1970-01-01
          • 2023-03-28
          • 2011-09-08
          相关资源
          最近更新 更多