如何找到子字符串的索引?

Qertoip

寻找等效于Ruby的Elixir:

"[email protected]".index("@")         # => 9
"[email protected]".index("domain")    # => 10
Qertoip

TL; DR:故意缺少String.index / 2,因为存在更聪明的替代方法通常,String.split / 2可以解决潜在的问题-并具有更好的性能。

  • 我假设我们在这里谈论的是UTF-8字符串,并希望能够完全处理非ASCII字符。

  • Elixir鼓励使用快速代码。事实证明,我们通常使用String.index / 2尝试解决的问题可以用一种更聪明的方式解决,从而在不降低代码可读性的情况下极大地提高了性能。

  • 更聪明的解决方案是使用String.split / 2和/或其他类似的String模块功能。String.split / 2在字节级别上运行,同时仍可以正确处理字素。不会出错,因为两个参数都是字符串!String.index / 2必须在字素级别上工作,并缓慢地遍历整个String。

  • 因此,除非有非常引人注目的用例无法用现有函数彻底解决,否则不太可能将String.index / 2添加到语言中。

  • 另请参阅关于此问题的elixir-lang-core讨论:https : //groups.google.com/forum/#!topic/ elixir-lang-core/ S0yrDxlJCss

  • 附带说明一下,Elixir在成熟的Unicode支持方面非常独特。虽然大多数语言都在代码点级别上工作(俗称“字符”),但Elixir却使用了更高的字素概念。字素是用户认为的一个字符(更确切地说,它是对“字符”的理解)。字素可以包含一个以上的代码点(而代码点又可以包含一个以上的字节)。

最后,如果我们确实需要索引:

case String.split("[email protected]", "domain", parts: 2) do
  [left, _] -> String.length(left)
  [_] -> nil
end

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何检查字符串是否包含NodeJS中子字符串数组中的文本,然后在数组中找到该子字符串的索引?

来自分类Dev

如何找到字符串中字符的索引?

来自分类Dev

如何用子字符串索引的字典中的值替换子字符串

来自分类Dev

如何在Ruby中找到两个字符串中相同子序列的索引?

来自分类Dev

SQL - 根据索引获取在变量和子字符串中找到的分隔符的索引

来自分类Dev

如何使用部分匹配找到子字符串

来自分类Dev

如何找到包含子字符串的节点?

来自分类Dev

如何找到具有特定模式的子字符串?

来自分类Dev

如何基于索引提取子字符串

来自分类Dev

如何替换基于索引的子字符串?

来自分类Dev

如何基于索引提取子字符串

来自分类Dev

如何根据索引替换子字符串?

来自分类Dev

如何获取PHP子字符串的索引0

来自分类Dev

如何在Oracle中获取子字符串索引

来自分类Dev

如何在子字符串列表中找到子字符串的首次出现?

来自分类Dev

如何在iOS中找到字符串并替换其子字符串?

来自分类Dev

在Python中找到字符串中的所有子字符串,如何使它更好?

来自分类Dev

如何在字符串中找到子字符串\',PHP

来自分类Dev

如何比较两个字符串以找到公共子字符串

来自分类Dev

如何找到子字符串字符串的一部分

来自分类Dev

在结束索引限制的字符串中找到子字符串最后一次出现的位置

来自分类Dev

如何从特定索引的字符串中快速删除子字符串到某个长度

来自分类Dev

如何从Rust字符串或&str类型的索引中删除子字符串?

来自分类Dev

python在字符串中找到子字符串

来自分类Dev

在/和\之间找到子字符串

来自分类Dev

给定起始括号和字符串的索引时,如何找到闭合括号的索引

来自分类Dev

在子字符串后查找索引

来自分类Dev

NSIS子字符串按索引

来自分类Dev

如何在字符串列表中找到子字符串?

Related 相关文章

  1. 1

    如何检查字符串是否包含NodeJS中子字符串数组中的文本,然后在数组中找到该子字符串的索引?

  2. 2

    如何找到字符串中字符的索引?

  3. 3

    如何用子字符串索引的字典中的值替换子字符串

  4. 4

    如何在Ruby中找到两个字符串中相同子序列的索引?

  5. 5

    SQL - 根据索引获取在变量和子字符串中找到的分隔符的索引

  6. 6

    如何使用部分匹配找到子字符串

  7. 7

    如何找到包含子字符串的节点?

  8. 8

    如何找到具有特定模式的子字符串?

  9. 9

    如何基于索引提取子字符串

  10. 10

    如何替换基于索引的子字符串?

  11. 11

    如何基于索引提取子字符串

  12. 12

    如何根据索引替换子字符串?

  13. 13

    如何获取PHP子字符串的索引0

  14. 14

    如何在Oracle中获取子字符串索引

  15. 15

    如何在子字符串列表中找到子字符串的首次出现?

  16. 16

    如何在iOS中找到字符串并替换其子字符串?

  17. 17

    在Python中找到字符串中的所有子字符串,如何使它更好?

  18. 18

    如何在字符串中找到子字符串\',PHP

  19. 19

    如何比较两个字符串以找到公共子字符串

  20. 20

    如何找到子字符串字符串的一部分

  21. 21

    在结束索引限制的字符串中找到子字符串最后一次出现的位置

  22. 22

    如何从特定索引的字符串中快速删除子字符串到某个长度

  23. 23

    如何从Rust字符串或&str类型的索引中删除子字符串?

  24. 24

    python在字符串中找到子字符串

  25. 25

    在/和\之间找到子字符串

  26. 26

    给定起始括号和字符串的索引时,如何找到闭合括号的索引

  27. 27

    在子字符串后查找索引

  28. 28

    NSIS子字符串按索引

  29. 29

    如何在字符串列表中找到子字符串?

热门标签

归档