Java 使用String.split时无法将字符串[]转换为字符串

Java 使用String.split时无法将字符串[]转换为字符串,java,arrays,string,indexing,split,Java,Arrays,String,Indexing,Split,我在字符串中有一个变量。现在我需要从字符串中提取这个变量,并将其拆分,这样它就只提取那个部分,并将它存储在一个新变量中,这样我就可以只打印那个变量了。(我很抱歉,如果这是一个粗略的解释,我是新的和措辞的事情仍然是棘手的) FirstName是用户的输入 String FIRST_SENTENCE = " There once was a person named " + firstName + " who lived in a city called " + city + ". "; //还有

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

FirstName是用户的输入

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)

分裂

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

试试这个:

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

由于您已经可以访问
用户输入
,因此只需使用下面的代码即可将其打印出来

System.out.println(名字)

如果需要从生成的字符串中获取
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);

出现错误是因为您试图将
字符串的
数组
分配给
字符串

String nameOne = FIRST_SENTENCE.split(firstName); // Illegal
split
方法通过围绕给定正则表达式的匹配项拆分此字符串来计算字符串数组。 您可以这样修改代码以使其合法:

String[] splits = FIRST_SENTENCE.split(firstName);
这将为您提供一个长度为2的数组,其中包含两个值:
[曾经有一个名为的人,居住在一个名为的城市。]
请注意,如果您计划从拆分结果中使用该值,则执行此不必要的拆分不会得到
firstName
的值。你手边已经有了名字,用它代替吧

String[] nameOne = FIRST_SENTENCE.split(firstName);
首先,split()方法将始终生成字符串[]。 通过对firstname使用split()方法,您将永远无法打印firstname,它所做的是将名字周围的字符串打断,因此,输出将是长度为2的字符串[],值为:

[ There once was a person named, who lived in a city called <city>. ]
[从前有一个人名叫,住在一个叫

如果您试图打印
firstName
,为什么还需要
nameOne
?为什么不能使用
System.out.println(firstName)?当你在某个分隔符(你的“名字”)上拆分时,你不会得到该分隔符,只得到它周围的部分(“There…named”和“who…called…”)