我想在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