微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Smalltalk 中查找字符串末尾数字的方法

如何解决在 Smalltalk 中查找字符串末尾数字的方法

我的程序正在读取不同的命令(即打印、计数、最小值、最大值等)。这些词还可以在其末尾包含一个数字(即 print3、count1、min2、max6 等)。我试图找出一种方法提取命令和数字,以便我可以在我的代码中使用它们。

我正在努力想办法找到字符串中的最后一个元素,以便在 Smalltalk 中提取它。

解决方法

我想还有更优雅的方法,但您可以利用 function setup(height = 400,width = 400) { createCanvas(height,width); if(height <= 0) return setTimeout(() => { this.setup(height - 100,width - 100) },2000) } function draw() { background(220); } 仅解析它可以识别的部分这一事实。所以你可以这样做

String>>#asNumber

给你 31。这只有在最后确实有一个数字时才有效。

,

你没有告诉你使用的是哪个 Smalltalk 的化身,所以我会解释我会在 Pharo 中做什么,那是我熟悉的那个。

作为一个最多玩几个月的 Pharo 的人,我可以告诉你,可用的类和方法的数量之多一开始可能会让人感到不知所措,但实际上环境很容易找到东西。例如,当您知道所需的确切输入和输出,但不知道某个方法是否已存在于某处或其名称时,Finder 实际上允许您通过示例进行搜索。可以在世界菜单中打开,如下图:

Finder location

默认情况下,它会寻找与您的输入词匹配的选择器(方法名称):

enter image description here

但是这个默认值不是我们现在需要的,所以你必须把右上角的选项改成“Examples”,然后在搜索字段中输入一个输入的例子,然后是你想要的输出,两者都是以“.”分隔。我使用的输入示例是字符串 'max6',后跟想要的结果,数字 6。然后 Pharo 给了我一个匹配的方法列表:

enter image description here

要获得返回文本部分的内容,您可以进行新的搜索,将示例输出从数字 6 更改为字符串 'max':

enter image description here

幸运的是,有几个内置方法与您的问题描述相匹配。

,

这是我们可以假设输入数据具有特定形式的情况之一,即只有数字出现在字符串的末尾,而您需要所有这些数字。在那种情况下,做起来并不难,真的,只是:

    numText := 'Kalahari78' select: [ :each | each isDigit ].
    num := numText asInteger. "78"

要获得没有数字的字符串的其余部分,您可以使用:

    'Kalahari78' withoutTrailingDigits. "Kalahari"6

正如一些 Pharo“OG”所指出的,你可以看看 String 类(只需键入 CMD-Return,键入 String,点击 Return),你会发现各种方法的惊人数量事物。通常你可以从中得到一些想法。但有时您真的只需要一个答案!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。