Java读取带方括号的字符串

时间:2017-01-18 13:35:49

标签: java

我想从命令行读取特定日志条目的userinput。 我读取字符串的方法:

public static String readString(String message)
{ 
   System.out.print(message);
   Scanner scan = new Scanner(System.in);
   String response = null;

   while (response == null || response.equals("") || response.length() <= 4)
   {
      if(response != null)
      {
         System.out.println("Type atleast 5 chars");
         System.out.println(message);
      }
      response = scan.next();
   }
   return response;
}

因此,只要我只键入普通文字,一切都运行正常。 但键入类似的东西:

“[log-123]示例文本”

返回拆分响应。

那么为什么这个问题会产生影响以及如何避免这种问题,所以所有字符都会被排除在外。

1 个答案:

答案 0 :(得分:3)

扫描仪next

  

查找并返回此扫描仪的下一个完整令牌。在完成令牌之前和之后是与分隔符模式匹配的输入。

  

扫描程序使用分隔符模式将其输入分解为标记,默认情况下匹配空格

因此输入[log-123] sample text将在空格处被破坏。它与括号无关。

这可能更符合您的要求:

扫描仪nextLine

  

使此扫描程序超过当前行并返回跳过的输入。此方法返回当前行的其余部分,不包括末尾的任何行分隔符。该位置设置为下一行的开头。