标签: search

搜索流的字符串的有效方法

假设我有一个文本流(或Java中的Reader),我想检查一个特定的字符串.文本流可能非常大,因此一旦找到搜索字符串,我就想返回true并且还试图避免将整个输入存储在内存中.

天真地,我可能会尝试做这样的事情(在Java中):

public boolean streamContainsString(Reader reader, String searchString) throws IOException {
    char[] buffer = new char[1024];
    int numCharsRead;
    while((numCharsRead = reader.read(buffer)) > 0) {
        if ((new String(buffer, 0, numCharsRead)).indexOf(searchString) >= 0)
            return true;
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

当然,如果它出现在1k缓冲区的边界上,则无法检测到给定的搜索字符串:

搜索文本:"stackoverflow"
流缓冲区1:"abc ......... stack"
流缓冲区2:"溢出....... xyz"

如何修改此代码,以便正确地找到跨越缓冲区边界的给定搜索字符串,但不将整个流加载到内存中?

编辑:注意在搜索字符串的流时,我们尝试最小化从流中读取的数量(以避免网络/磁盘中的延迟)并保持内存使用不变,无论流中的数据量如何.字符串匹配算法的实际效率是次要的,但很明显,找到使用这些算法中更有效的算法之一的解决方案会很好.

java string algorithm search stream

50
推荐指数
4
解决办法
3万
查看次数

具有重叠事件的字符串计数

计算给定字符串出现次数的最佳方法是什么,包括python中的重叠?这是最明显的方式:

def function(string, str_to_search_for):
      count = 0
      for x in xrange(len(string) - len(str_to_search_for) + 1):
           if string[x:x+len(str_to_search_for)] == str_to_search_for:
                count += 1
      return count


function('1011101111','11')
returns 5
Run Code Online (Sandbox Code Playgroud)

或者在python中有更好的方法吗?

python string search

50
推荐指数
4
解决办法
5万
查看次数

Visual Studio 2022 在整个解决方案中查找全部无法正常工作

我刚刚开始使用 Visual Studio 2022,我尝试通过 ctrl+F 和“查找全部”功能搜索某些内容,但它没有找到我正在搜索的密钥,即使我知道有这样一个在解决方案中我的一个项目中键入一个文件。全新安装后我是否会错过配置步骤?

注意:当我在“当前文档”中搜索时,我能够找到密钥

search visual-studio-2022

50
推荐指数
5
解决办法
2万
查看次数

在Vim中显示匹配数

当您进行搜索时,Google Chrome中有一项很棒的功能.它会告诉您正在搜索的关键字的匹配数.但是,在Vim我没有看到这样的功能.有人建议使用%s/pattern//gn或类似:

http://vim.wikia.com/wiki/Count_number_of_matches_of_a_pattern
无法计算Vim中的匹配数

但这真的很长!! 当我按'*','%'或使用'/'和'?'进行搜索时,我正在寻找计数.

任何的想法?

vim search

49
推荐指数
5
解决办法
2万
查看次数

如何永久地从崇高文本3中的搜索中排除文件夹?

是否有办法在项目视图中始终忽略文件夹...

我在一个仓库中有多个应用程序,每个应用程序都有"node_modules"

mainapp
---microapp
-----node_modules
---microapp2
-----node_modules
---index
---config
---assets
Run Code Online (Sandbox Code Playgroud)

node_modules当我在上面的结构中搜索项目时,我想从搜索文件夹中排除.

search text-editor editor sublimetext sublimetext3

49
推荐指数
4
解决办法
1万
查看次数

如何从Visual Studio文件搜索中排除designer.cs

有没有办法在Visual Studio 2005/8中进行搜索时排除特定类型的.cs文件?

示例:在重构场景中,我可能会搜索以识别我的代码中的字符串文字,以便我可以将它们重构为常量或类似的.但是,*designer.cs文件中充满了字符串文字,我无需处理它们,但它们出现在我的搜索中并污染了结果集.

我经常搜索*.cs ...

我如何忽略*.designer.cs?

search visual-studio

48
推荐指数
5
解决办法
1万
查看次数

什么是最好的自动完成/建议算法,数据结构[C++/C]

我们看到谷歌,Firefox,一些AJAX页面显示可能的项目列表,而用户键入字符.

有人能给出一个好的算法,数据结构来实现自动完成吗?

c c++ algorithm search autocomplete

48
推荐指数
4
解决办法
5万
查看次数

更改操作栏searchview提示文本颜色

如何更改操作栏搜索视图提示文本颜色?

这个问题解释了如何在使用ABS时获取EditText: Android ActionBar自定义搜索视图

有没有android.R.id我可以用来获取EditText的引用,所以我可以改变提示颜色?或者还有其他方法可以改变颜色吗?

操作栏搜索视图提示文本

search android android-actionbar

48
推荐指数
11
解决办法
7万
查看次数

在Python中,如何检查字符串是否只包含某些字符?

在Python中,如何检查字符串是否只包含某些字符?

我需要检查一个只包含a..z,0..9和的字符串.(期间),没有其他性格.

我可以迭代每个字符并检查字符是a ..z或0..9,或.但那会很慢.

我现在还不清楚如何使用正则表达式来完成它.

它是否正确?你能建议一个更简单的正则表达式或更有效的方法吗?

#Valid chars . a-z 0-9 
def check(test_str):
    import re
    #http://docs.python.org/library/re.html
    #re.search returns None if no position in the string matches the pattern
    #pattern to search for any character other then . a-z 0-9
    pattern = r'[^\.a-z0-9]'
    if re.search(pattern, test_str):
        #Character other then . a-z 0-9 was found
        print 'Invalid : %r' % (test_str,)
    else:
        #No character other then . a-z 0-9 was found
        print 'Valid   : %r' % (test_str,)

check(test_str='abcde.1')
check(test_str='abcde.1#')
check(test_str='ABCDE.12')
check(test_str='_-/>"!@#12345abcde<')

''' …
Run Code Online (Sandbox Code Playgroud)

python regex search character

47
推荐指数
5
解决办法
11万
查看次数

如果针是一个数组,我如何使用in_array?

我有2个数组,值将从数据库加载,下面是一个例子:

$arr1 = array(1,2,3);
$arr2 = array(1,2,3,4,5,6,7);
Run Code Online (Sandbox Code Playgroud)

我想要做的是检查是否所有的值$arr1的存在$arr2.上面的例子应该是一段TRUE时间:

$arr3 = array(1,2,4,5,6,7);
Run Code Online (Sandbox Code Playgroud)

比较$arr1$arr3将返回FALSE.

通常我使用in_array因为我只需要将单个值检查到数组中.但在这种情况下,in_array不能使用.我想看看是否有一种简单的方法来进行最小循环检查.

更新澄清.

第一个数组将是一个包含唯一值的集合.第二个数组可以包含重复的值.它们在处理之前都保证有阵列.

php arrays search compare

47
推荐指数
3
解决办法
3万
查看次数