我想根据括号将字符串拆分成多个部分。所以,如果我有以下字符串:
在公平(* NAME OF A CITY),我们躺在哪里(* NOUN),
字符串应拆分为:
公平
*城市名称
,我们躺在哪里
* NOUN
我设置了这样的分隔符:
String delim = "[()]";
String [] inputWords = line.split (delim);
因为开头的*中所有大写字母的字符串将被用户输入替换,所以我设置了一个循环:
while (input.hasNextLine())
{
line = input.nextLine();
String [] inputWords = line.split (delim);
for (int i = 0; i < inputWords.length; i++)
{
if (inputWords[i].charAt(0) != '*')
{
newLine.append (inputWords[i]);
}
else
{
String userWord = JOptionPane.showInputDialog (null, inputWords[i].substring (1, inputWords[i].length()));
newLine.append (userWord);
}
}
output.println (newLine.toString());
output.flush();
newLine.delete (0, line.length());
}
看起来我的if语句出错:
if (inputWords[i].charAt(0) != '*')
当我运行它时,我得到一个StringIndexOutOfBoundsException:String index超出范围:0。不确定为什么会发生这种情况。有什么建议?谢谢!
答案 0 :(得分:1)
显然line = input.nextLine();
给你一个空白字符串,正如@Marco已经提到过的那样。
在进一步处理之前处理空行。