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。