gpt4 book ai didi

java - 在 ByteArrayOutputStream 中搜索子字符串

转载 作者:行者123 更新时间:2023-12-02 01:48:03 25 4
gpt4 key购买 nike

我有以下代码(简化):

 InputStream from = ...
ByteArrayOutputStream answer = new ByteArrayOutputStream();
String res = "";

int maxn = 1024;
byte[] buffer = new byte[maxn];
while( true ) {
int a = from.available();
if( a > 0 ) {
if( a > maxn ) a = maxn;
a = from.read( buffer, 0, a );
answer.write( buffer, 0, a );

res = answer.toString();
if( res.contains( "myprompt" ) ) return res;
}
}

有什么方法可以在每次迭代时跳过答案从字符串的转换,只是为了检查它是否包含“myprompt”?

这似乎效率低下。

谢谢。

最佳答案

简短的回答是否定的。 ByteArrayOutputStream 除了创建新对象并返回其中所有内容的查询方法之外,没有任何查询方法。

如果你无论如何都放弃它,为什么还要使用ByteArrayOutputStream呢?您可以使用包含可搜索子字符串的 indexOf() 方法的 StringBuilder

[编辑]还有一个关于字符编码的警告:ByteArrayOutputStream.toString() 使用平台默认编码,无论您是否喜欢。同样,无论您是否喜欢,向 StringBuilder 追加字节将使用 ISO_8859_1 的等效项(即一个字节 → 一个字符)。如果您需要特定的编码,则需要另一种方法,并且它不会像 StringBuilder 那样高效(但比您当前的实现更高效)。

关于java - 在 ByteArrayOutputStream 中搜索子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53446994/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com