![]() |
1
566
这种方法的优点是不需要在所有元素上循环(至少不显式)。但是自从
正则表达式将看到“Jack”在数组中,即使它不是。因此您必须更改
这将打印“假”。 显然,这也可以用作测试语句,允许将其表示为一个线性表达式
|
![]() |
2
416
下面是实现这一点的一个小功能。搜索字符串是第一个参数,其余是数组元素:
该函数的测试运行可能如下所示:
|
![]() |
3
65
单线解决方案
这个
这个
用法
我加了一个
|
![]() |
4
59
|
![]() |
5
56
|
![]() |
6
21
如果您需要性能,您不希望每次搜索时都在整个阵列上循环。 在这种情况下,可以创建表示该数组索引的关联数组(哈希表或字典)。即,它将每个数组元素映射到其在数组中的索引中:
然后你可以这样使用它:
像这样测试会员资格:
或者:
另外,您还可以通过以下方式获得数组中值的索引:
|
![]() |
7
17
非零值表示找到匹配项。 |
![]() |
8
17
另一个没有函数的线性函数:
例子:
|
![]() |
9
12
|
![]() |
10
9
以下是一个小贡献:
注:这种方式不区分“两个词”的大小写,但在问题中不需要这样做。 |
![]() |
11
8
如果您想做一个快速而肮脏的测试,看看是否值得在整个数组上迭代以获得精确的匹配,Bash可以将数组视为标量。测试标量中的匹配项,如果没有匹配项,则跳过循环可以节省时间。很明显你会得到假阳性。
|
![]() |
12
6
如果您愿意,您可以使用等效的长选项:
|
![]() |
13
6
如何检查Bash数组是否包含值假阳性匹配
为了寻找精确的匹配,您的正则表达式模式需要在值之前和之后添加额外的空间,如
|
![]() |
14
5
这对我有用:
呼叫示例:
|
![]() |
15
5
借款 Dennis Williamson 的 answer
|
![]() |
16
5
下面是几个可能实现的汇编,包括集成验证和简单的基准测试:
结果:
|
![]() |
17
4
这种方法既不使用像
这里发生的是:
|
![]() |
18
4
The answer with most votes
如果
相关: |
![]() |
19
3
对@ghostdog74关于使用
或与
我们也可以用
|
![]() |
20
3
精确的单词匹配
|
![]() |
21
2
鉴于:
然后简单检查:
哪里
(单独指定p而不是直接在[[]中使用表达式的原因是为了保持bash4的兼容性) |
![]() |
22
2
使用
|
![]() |
23
1
以下是使用数组名称的版本:
等。 |
![]() |
24
1
使用参数展开:
|
![]() |
25
0
使用
|
![]() |
26
0
这是我的看法。
请注意,此函数使用的所有内容都是bash的内置内容,因此即使在命令扩展中,也没有外部管道将您拖下水。
|
![]() |
27
0
行动计划本身添加了以下答案,并附有评注:
|
![]() |
28
0
保持简单:
|
![]() |
29
0
像这样使用:
也可直接用于:
为了
但非常重要的是,搜索变体的效率更高,因为这里的变体总是将整个数组转换为一个大字符串。
|
![]() |
30
-1
我已经提出的正则表达式技术版本:
我相信它是干净而优雅的,尽管我不太确定如果支持的值数组特别大,它的性能会如何。 |
![]() |
Toniq · javascript为php保存多维数组 1 年前 |
|
Jannis · Java中数组的怪异行为 1 年前 |
|
callum · 如何识别数组中与给定序列不匹配的元素? 1 年前 |
![]() |
tenfour · 如何使用数组元素的索引初始化数组元素 2 年前 |
![]() |
Guillaume · 使用操作从Python列表创建numpy数组 2 年前 |
![]() |
maxMas · Swift 5:为什么会出现索引超出范围错误? 2 年前 |