Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我想在Java中的InputStream末尾读取\t\t_Java_String_Sockets_Parsing - Fatal编程技术网

我想在Java中的InputStream末尾读取\t\t

我想在Java中的InputStream末尾读取\t\t,java,string,sockets,parsing,Java,String,Sockets,Parsing,我有以下代码 InputStream inputStream = sock.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); String line = null; while((line = reader.readLine()) != null) { String[] data = line.split("\\s+")

我有以下代码

InputStream inputStream = sock.getInputStream();

BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));

String line = null;
while((line = reader.readLine()) != null) {
    String[] data = line.split("\\s+");

//rest of the code
发送方应该发送以下字符串

String DataToSend = "Name John City NewYork \t\t"

我要确认的是,来自客户端到服务器的消息以双制表符结尾\t\t,它不会显示在字符串[]数据中。

首先,您需要了解以下两件事:

  • reader.readLine()
    将为您提供不带换行符的字符串, 因为它一直读到新行
  • line.split(\\s+”)
    将为您提供不带空格字符的字符串,因为它基于空格字符进行拆分。
    \t
    \n
    \r
    空格
    ,都是空白字符
  • 现在,取决于你想要什么,你可以做的事情很少:

  • 检查每行末尾的
    \t\t
    您可以在拆分字符串之前进行检查,示例代码:
  • 注意:当<代码> \t\t/c>位于字符串的中间时,如<代码> hello \t\Words/COD>,它将不被处理。

  • 读取字符串直到
    \t\t
    您可以使用
    Scanner
    并将
    \t\t
    设置为分隔符,示例代码:
  • 输出:

    data number 1:
    hello
    
    data number 2:
    world
    it's me
    

    代码有什么问题?
    if(line.endsWith(“\t\t”)
    String[]data=line.split(\\s+”)之前行。拆分(\\s+);此语句将\t\t视为空格字符,并将其从结果字符串数组中删除,这说明流结尾不包含
    \t\t
    。如果您确信它是这样的,那么只需使用
    String.replace
    \t\t
    替换为其他内容,然后查看是否显示您所替换的内容
    BufferedReader.readLine
    不会在选项卡上拆分,因此如果它存在,您应该能够从执行该测试中获得一些信息,并且您需要将问题弄清楚。把所有额外的细节都放进问题本身。。。以连贯的方式。。。因此,阅读问题的人可以理解您要求我们帮助您解决的完整问题。它会一直读到行结束符或流结束,然后扔掉结束符。
    InputStream inputStream = new ByteArrayInputStream("hello\t\tworld\nit's me".getBytes());
    
    Scanner scanner = new Scanner(inputStream);
    scanner.useDelimiter("\t\t");
    
    int count = 1;
    while (scanner.hasNext()) {
        String data = scanner.next();
        System.out.println("data number " + count + ":");
        System.out.println(data);
        System.out.println();
        count++;
    }
    
    data number 1:
    hello
    
    data number 2:
    world
    it's me