当前位置: 首页 > 面试题库 >

从字符数组中删除所有空元素

郑翰海
2023-03-14
问题内容

我有一个字符数组,一次最多可以容纳50000个字符。该数组的内容通过套接字连接来。但是,不能保证此字符缓冲区不会有任何空元素。然后,我需要将此字符数组转换为字符串(例如,新的String(buffer);)。我的问题是,每当我从套接字收到的缓冲区长度不超过50000时,如何从此char数组或String中删除剩余的元素或空元素?如果没有,您建议的最有效方法是什么?

/ 这是当前的实现 /

private BufferedReader is;

//Other code

public String readBufferUpdate() throws IOException {
    char[] buffer =new char[50000];
    is.read(buffer);
    return new String(buffer);
}

//////这是使用ByteArrayOutputStream的实现

public String readAuth() throws IOException {
        int s;
        ByteArrayOutputStream bao = new ByteArrayOutputStream();
        while ((s = is.read()) != -1) {
            bao.write(s);
            if (!is.ready())
                break;
        }
        if (s == -1) {
            return null;
        }
        String result = bao.toString();
        return result;
    }

当我需要读取大量数据时,此实现非常慢。

- - - - - - - - -编辑

(例如,服务器向我发送数据,但它不一定总是50000长字节,而是32822长字节,那么我需要删除剩余的数组元素)


问题答案:

InputStream缓冲区中读取数据的正确方法如下。

public String readBufferUpdate() throws IOException {
    char[] buffer =new char[50000];
    int bytesRead = is.read(buffer, 0, buffer.length);
    return new String(buffer, 0, bytesRead);
}

在这里,您is.read()返回已读入多少字节bytesRead。只有这么多字节从缓冲区复制到String



 类似资料:
  • 问题内容: 如何从JavaScript中的数组中删除空元素? 有没有简单的方法,还是我需要遍历它并手动将其删除? 问题答案: 编辑: 大约9年前,当时没有很多有用的内置方法时,就回答了这个问题。 现在,当然,我建议您使用该方法。 请记住,此方法将为您返回 一个新数组, 其中的元素可以通过您提供给它的回调函数的条件。 例如,如果要删除或值: 例如,这将取决于您认为什么是“空”,如果您正在处理字符串,

  • 问题内容: 我想开发一个只能从字符串中删除数字字符的mysql函数。 问题答案: 您可以编写用户定义的函数,在其中可以编写替换逻辑,也可以尝试:

  • 问题内容: 如何删除python字符串中的所有空格?例如,我希望将一个字符串转换为,但是我似乎无法通过以下方式完成此操作: 问题答案: 利用没有sep参数的str.split的行为: 如果只想删除空格而不是所有空格: 过早优化 尽管效率不是主要目标(编写清晰的代码是),但以下是一些初始时间: 请注意,正则表达式已缓存,因此它没有您想象的那么慢。编译事前帮助一些,但在实践中,如果你把这个只会重要 很

  • 问题内容: 我正在尝试编写一种方法,该方法将从Java中删除所有非字母字符,然后将String转换为小写字符串。我尝试使用正则表达式将所有非字母字符的出现替换为。但是,我得到的输出无法执行此操作。这是代码 但是,如果我尝试提供具有非字母的输入(例如或),则输出也将由它们组成,因为它们不会被删除。 输入示例 我得到的输出 预期的输出 问题答案: 问题是您的更改没有存储,因为字符串是不可变的。每个方法

  • 问题内容: 我有一个数组: 我想从中删除所有零,以便返回(保持相同的顺序): 有什么比以下方法更简单的方法来删除所有零? 我无法在Arrays类中找到任何方法,并且Google / SO搜索没有给我任何好的答案。 问题答案: 这是在少数情况下,用代码显示比用普通英语解释更容易的情况之一:

  • 问题内容: 在Go中从某个任意字符串中剥离所有空格的最快方法是什么。 我从字符串包中链接了两个函数: 有人有更好的方法吗? 问题答案: 以下是一些用于从字符串中剥离所有空格字符的不同方法的基准:(源数据): :用途; 随着遇到更多的非空白字符,逐渐增加分配的空间量 :和; 产生大量中间数据 用途; 执行一次分配,但是如果源字符串主要是空格,则可能会总体上分配。 package main_test