在Java中由InputStream接收的拆分字符串

 用户24fbqhclmt 发布于 2023-02-12 18:53

我们假设我想拆分以下字符串wrt \n

嗨!\n你好吗?我很好

当我使用以下代码(即初始化代码中的字符串)时:

String l = "Hi!\nHow are u doing\nI am good"
String[] sp = l.split("\\n");

它按预期工作!

但是如果我从InputStream获得输入 :

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String l = br.readLine();    
String[] sp = l.split("\\n");

它没有拆分!

知道为什么会这样吗?

1 个回答
  • 在阅读第二种情况时,您没有任何要拆分的东西.你读了一行,所以你读到那时\n你不能分开它,因为它已被读者分开了.

    如文档中所述

    读一行文字.一条线被认为是由换行符('\n'),回车符('\ r')或回车符中的任何一个终止,后面紧跟换行符.

    编辑:

    对于您的情况,您所做错的可能是您从代码中复制并粘贴字符串并期望以相同的方式工作.

    之所以导致整个输入而不是输出是因为out不能输入\n并且期望等于换行.现实是你传递两个char \n.因此,当您使用返回键值确认它时,该值将从System in传递给您

    [H,i,!,\,n,H,o,w, ,a,r,e, ,u, ,d,o,i,n,g,\,n,I, ,a,m, ,g,o,o,d]

    你的例子中的第一个字符串是哪里

    [H,i,!,\n,H,o,w, ,a,r,e, ,u, ,d,o,i,n,g,\n,I, ,a,m, ,g,o,o,d]

    结束作为输入传递的字符串将以与代码中定义的字符串不同的方式处理.它们似乎相同,因为\它在Java中具有特殊含义.

    2023-02-12 18:56 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有