squeak(smalltalk)如何使用方法'findSubstring:in:startingAt:matchTable:`?

squeak(smalltalk)如何使用方法'findSubstring:in:startingAt:matchTable:`?,string,smalltalk,squeak,String,Smalltalk,Squeak,我应该为匹配表:选择器发送什么 在实现中,没有这样的示例或详细说明 如果我将字符串放入中:选择器中,匹配表:关键字提供了一种识别字符的方法,以便它们在比较中变得等效,那么我不知道哪个对象得到了消息。参数通常是由256个条目组成的ByteArray,在i位置包含比较时要考虑的i第个字符的代码点 该表的主要用途是实现不区分大小写的搜索,例如,A=A。因此,在搜索过程中,所比较的不是手头的字符,而是匹配表中相应代码点处的元素。因此,与其 (string1 at: i) = (string2 at

我应该为
匹配表:
选择器发送什么

在实现中,没有这样的示例或详细说明
如果我将字符串放入
中:
选择器中,
匹配表:
关键字提供了一种识别字符的方法,以便它们在比较中变得等效,那么我不知道哪个对象得到了消息。参数通常是由
256个
条目组成的
ByteArray
,在
i
位置包含比较时要考虑的
i
第个字符的代码点

该表的主要用途是实现不区分大小写的搜索,例如,
A=A
。因此,在搜索过程中,所比较的不是手头的字符,而是
匹配表
中相应代码点处的元素。因此,与其

   (string1 at: i) = (string2 at: j)
测试变成了一种在线的东西

   cp1 := string1 basicAt: i.
   cp2 := string2 basicAt: j.
   (table at: cp1) = (table at: cp2).
换句话说,
matchTable:
参数用于将实际字符映射到对比较有实际意义的字符

注意,同样的技术也可以应用于区分大小写/不区分大小写的排序


最后,请记住,这是一种非系统程序员很少需要的低级方法。您应该使用更高级别的版本来查找子字符串,例如
findString:startingAt:caseSensitive:
,其中最后一个关键字的参数是
布尔值

我可以使用此方法查找子字符串还是仅查找字符串?您可以在另一个字符串中查找任何字符串。子字符串是字符串,它们之间没有区别。术语substring指出现在另一个字符串中的字符串。例如,字符串
'al'
'Smalltalk'
的子字符串,有两个出现,一个在索引3,另一个在索引7。