用空格java读取字符串

时间:2014-05-31 10:27:30

标签: java

我试图用带空格的扫描仪读取,我想读甚至空格。 例如"约翰史密斯"阅读"约翰史密斯"。

我的代码如下: 当它到达john之后的空间时,它只是挂起而且不再读取。 任何帮助将不胜感激。

Scanner in = new Scanner(new InputStreamReader(sock.getInputStream()));

String userName = "";
while (in.hasNext()) {
    userName.concat(in.next());
}

3 个答案:

答案 0 :(得分:1)

Scanner.next()返回由空格分隔的下一个标记。如果您想要阅读整行以及空格,请改用nextLine()

String userName = in.nextLine();

答案 1 :(得分:0)

Scanner scan = new Scanner(file);  
scan.useDelimiter("\\Z");  
String content = scan.next();   

 private String readFileAsString(String filePath) throws IOException {
            StringBuffer fileData = new StringBuffer();
            BufferedReader reader = new BufferedReader(
                    new FileReader(filePath));
            char[] buf = new char[1024];
            int numRead=0;
            while((numRead=reader.read(buf)) != -1){
                String readData = String.valueOf(buf, 0, numRead);
                fileData.append(readData);
            }
            reader.close();
            return fileData.toString();
        }

答案 2 :(得分:0)

当我们使用Scanner.next()读取令牌时,我们称之为分隔符,扫描器使用的默认分隔符为\ p {javaWhitespace} +,您可以通过调用Scanner.delimiter()来获取它。是验证Character.isWhitespace(char)的任何字符。您可以使用Scanner.useDelimiter()为扫描仪使用自定义分隔符。

如果您想将一行作为字符串使用,那么您可以使用nextLine(),如果您已经知道输入流中下一个标记的类型,则扫描程序会为您提供方法列表{{1将令牌转换为指定的类型。有关详情,请参阅扫描人员的文档here