簡體   English   中英

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

[英]squeak(smalltalk) how to use method `findSubstring: in: startingAt: matchTable:`?

我應該為matchTable:發送什么matchTable:選擇器?

在實現中,沒有示例或詳細說明,因此如果將字符串in:選擇器中in:我不明白哪個對象正在獲取消息

matchTable:關鍵字提供了一種識別字符的方法,以便它們在比較中變得等效。 參數通常是一個包含256個條目的ByteArray ,在位置i包含比較時要考慮的第i個字符的代碼點。

該表的主要用途是實現不區分大小寫的搜索,例如, A=a 因此,不是在搜索期間比較手頭的字符,而是比較在matchTable在其各自代碼點處找到的元素。 所以,而不是

   (string1 at: i) = (string2 at: j)

測試變成了

   cp1 := string1 basicAt: i.
   cp2 := string2 basicAt: j.
   (table at: cp1) = (table at: cp2).

換句話說, matchTable:參數用於將實際字符映射到對比較實際重要的字符。

請注意,相同的技術可應用於區分大小寫/不區分大小寫的排序。

最后,請記住,這是一種非系統程序員很少需要的相當低級的方法。 您應該使用更高級別的版本來查找子字符串,例如findString:startingAt:caseSensitive: ,其中最后一個關鍵字的參數是Boolean

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM