1
h4lbhg1G 2018-01-24 22:12:17 +08:00
find 一般是索引查找返回 index,search(多半是正则等复杂的查找)返回结果?完全没道理地臆测下。
|
2
geelaw 2018-01-24 22:24:59 +08:00
从词典考虑,find 是找到,search 是去找。
从用法上考虑,一般 find text in a document,但是 search files in a folder, search "some keywords" with Google, search the Internet。 如果要写一个查找规律的东西,有以下几种选择: - Collection.Where - string.Find - RegExp.Match - ShellFolder.Search |
3
mringg 2018-01-24 22:25:58 +08:00 via iPhone
我想起 look for 和 find 了
|
4
McTaylor 2018-01-24 22:27:37 +08:00
find 是要找到,
search 是搜索遍历一次数组 |
5
hsuan 2018-01-24 22:28:32 +08:00 via Android
没有区别
|
6
SuperMild 2018-01-24 22:34:15 +08:00
感觉 search 是带有更明确的目的,更有计划、规律。find 更盲目一点,凭感觉去发现。
|
7
innoink OP @geelaw linux 命令行 find 是查找文件的,各种编辑器的查找功能都叫 find,grep 叫 Globally search a Regular Expression and Print,AG 叫 the silver searcher,emacs 的查找是 Incremental Search,C++STL 里面既有 search 又有 find,还有个 find_end 和 search 完全相同只不过是倒序,二分查找叫 bsearch ……
我感觉很混乱 |
8
SuperMild 2018-01-24 22:38:32 +08:00
比如想在文本中找一个单词,凭肉眼快速浏览一下,用 find 好点,但如果用 Ctrl+F 的功能去找则用 search 好点。还有“就是找出图中最先看到的一个单词,预测你今天的运气”,这种单词都不确定的情况,就只能用 find 不能用 search 了。
|
9
winterbells 2018-01-24 22:41:50 +08:00
I found you. 我找到你了
I searched you. 我查找你了 |
10
northisland 2018-01-24 23:07:10 +08:00
search 更庞大,find 比较简单。
find 是文件级别 search 就可以是个引擎了 有本名著叫<the Search for Modern China>(《追寻现代中国》),search 这个词往大了用,可以用来描述 500 年追求现代化的过程~~~~ |
11
zhangxiao 2018-01-24 23:10:45 +08:00
感觉 find 目的性更明确,能准确描述要找的目标。search 相对模糊一些。
|
12
geelaw 2018-01-24 23:46:45 +08:00 via iPhone
@innoink search a file 和 search files in a folder 不一样,前者更倾向于在文件里面搜索。grep 的解释很简单,因为 grep 找到的东西不是 regex 所以不可能是 find a regex,search X 可以表达 find a match of X 的意思。
|
13
lxy 2018-01-24 23:50:33 +08:00
这种 google 一下 what's different between find and search 就有的回答
|
14
innoink OP @lxy 那你能不能给我找一下,为什么“在文件中搜索”这个行为,在一般的编辑器(比如 atom )叫 find,快捷键 ctrl-f,但相同的行为在 grep、ag、emacs 中却都叫 search,这两种到底有什么区别
|
16
hguandl 2018-01-25 00:46:11 +08:00 1
0. LZ 有点钻牛角尖,但是我也喜欢这样 /逃
查了下牛津高阶词典第七版: find - > BY SEARCHING 2 to get back sth/sb that was lost after searching for it/them search - 1 to look carefully for sth/sb; to examine a particular place when looking for sb/sth 在我理解就是 search 是 find 的过程,或许可以理解为 find = search & get。换句话说就是 search 单单指用一定算法进行匹配的过程,无所谓找没找到,跑完即可;而 find 隐含一层是否找到的意思,就是经过 search 后是否有能 get 到的内容。以上瞎编,这只是强行区别,在实际函数方法的使用上,除了名字不同真的没有任何区别,不过感觉上 find 有点倾向于自然语言的说法,而 search 比较学术。 |
17
innoink OP @hguandl 我就是在写代码的时候,想写一个查找功能的函数,我以前都用 find,毕竟 ctrl-f 习惯了;然而最近在学 emacs,突然一想,查找也可能是 search 啊
我知道 find 侧重结果,search 侧重过程,但是这在英文语境中才能体现,在代码中体现不出来 然后又想到 在 excel 中,同时存在 search 和 find 两个函数,而区别是大小写敏感和通配符,和“侧重过程还是侧重结果”并没有关系 stl 中也同时存在 search、find、search_n、find_end、find_first_of 等函数,都是大同小异,不明白为什么不全用 find 或者全用 search 前缀 然后又想到 同样是 search,search engine 被翻译成搜索引擎,binary search 却是二分查找,depth first search 又是深度优先搜索…… |
18
yangqi 2018-01-25 02:28:36 +08:00
都是找,但是 find 强调的是结果,search 强调的是过程
如果函数里面的话,search 可以理解为搜索,目标不是很明确,或者有很多,一般会返回所有结果。find 可以理解为寻找,目标比较明确,一般找到第一个就返回结果 |
21
innoink OP @yangqi 既然是一般情况,我想你应该能说出几个
“ search 可以理解为搜索,目标不是很明确,或者有很多,一般会返回所有结果。find 可以理解为寻找,目标比较明确,一般找到第一个就返回结果” 的案例吧?反正我现在是没找到哪个语言、哪个库是这么设计的 |
22
yangqi 2018-01-25 03:08:39 +08:00
@innoink #21 我说的一般情况并不是指那个语言或者库。我说的是软件开发里面自己定义的函数,楼主问的也是这个。根据英文的含义来理解比较自然,当然软件开发关键还是要看文档,所以函数怎么命名只有好坏,没有对错。
|
23
h4lbhg1G 2018-01-25 04:19:42 +08:00
@innoink 好了你有明确的例子,我就好解(qiang)释(xing)了。
我先说下结论,find 就是简单的线性表查找。比如字符串查找,文本编辑器 Ctrl+F 查找(这里就不要较真正则表达式了)。如果用到了数据结构树或者图或者认为算法很高级,一般就说是 search 了。也就是高大上一点的叫做 search,简单平庸的叫做 find。 大部分语言的字符串的 find 应该都是普通的线性查找,并且返回下标。 用 STL 来解释,binary search 因为属于比较高级,英文叫做 find,中文认为太简单叫做查找。而深度优先,相对比较复杂就都叫做搜索。search_n 比较高级。find_end 比较简单。 Excel 也可以解释,find 区分大小写,从程序角度比较简单,search 不区分大小写,相对比较高级。 |
24
KeepPro 2018-01-25 09:07:14 +08:00 via Android
感觉 find 强调 找到 这个动作,而 search 偏向于研究探索。
|
25
Mutoo 2018-01-25 09:48:36 +08:00
https://stackoverflow.com/questions/480811/semantic-difference-between-find-and-search
这个讨论值得参考。 TLDR: find 是 search 的完成态。find 会得到一个明确的结果(有明确的目标),而 search 可能得到 0 个或多个结果(设定某种标准)。例如 find a php job / search jobs with php |