簡體   English   中英

將 function 拆分為 Squeak Smalltalk

[英]split function in squeak Smalltalk

我目前正在做 squeak-Smalltalk 的練習。 我想拆分一個字符串,它的行為有點像 Java 或 python 中的拆分函數,但在互聯網上幾乎找不到任何東西。 請問有什么建議嗎? 我該如何實施?

謝謝!

SequenceableCollection >> splitBy:至少從 2010 年 2 月開始就存在於 Squeak 圖像中:

('1920x1080' splitBy: 'x') = #('1920' '1080')

我發現協議瀏覽器對回答這個問題最有幫助。 以下是一些您可以嘗試的選擇器:

'foo, bar, baz' splitBy: ','. "#('foo' ' bar' ' baz')"
'foo, bar, baz' splitBy: ', '. "#('foo' 'bar' 'baz')"
'foo, bar, baz' findTokens: ', '. "an OrderedCollection('foo' 'bar' 'baz')"

但請注意,雖然#splitBy:[Do:]將參數解釋為單個分隔符序列, #findTokens:將其用作一組單個字符分隔符:

'foo bar, baz' splitBy: ', '. #('foo bar' ' baz')
'foo bar, baz' findTokens: ', '. an OrderedCollection('foo' 'bar' 'baz')

希望這可以幫助。 享受你的吱吱聲!

不幸的是,沒有,似乎在吱吱聲中沒有splitsplitBy:消息(不像 Pharo ...),所以我自己實現了這樣的方法。

split: aSentence
|count str strArr |
    str := aSentence.
    count := ((aSentence select: [:a | a = $ ])) size.
    strArr := OrderedCollection new.
    [count >= 0]
    whileTrue: [
        strArr add: (str copyFrom: 1 to: (str indexOf: $ ifAbsent: [str size + 1]) - 1).
        str := str copyFrom: ((str indexOf: $ ) + 1) to: (str size).
        count := count - 1.
    ].
^strArr

暫無
暫無

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

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