只需查看可用的字符函数列表JMP公式编辑器。

不是有人在数数,而是 42 个函数!不用说,如果您有一个字符列并想以某种方式更改它,JMP 可能有一个功能可以为您完成。
但是请注意,其中 9 个函数全部(或大部分)都是关于提取字符值的某些部分。诚然,这是最常见的操作之一——提取较大字符串的某些部分。这称为子串。
最明显的功能是子字符串()函数,但此函数要求您确切知道您感兴趣的部分在较大字符串中的位置。这也意味着您想要的部分必须在每个字符串中位于同一位置。
这就是为什么我喜欢单词()功能。它非常灵活,并且按照我的想法工作。
这单词()函数需要两个必需参数和一个可选参数。
Word(n, "text", <"delimiters">)
这单词()函数划分文本成词基于分隔符您指定并返回 n日单词。如果您不指定分隔符参数,则默认分隔符与我们用来分隔句子中的单词的分隔符相同:空格。
例如,考虑以下列天数:
|
| 天 |
|---|
|
| 12 月 6 日 |
|
| 12月16日 |
|
| 9月28日 |
|
| 5月19日 |
|
| 9月29日 |
|
| 9月11日 |
|
| 3月14日 |
|
| 11 月 13 日 |
|
| 10 月 27 日 |
|
| 1月7日 |
分隔月份很容易单词()功能。您只需要每个字符串的第一个单词。
字(1,天)
这在许多情况下都很有效,但是当您考虑使用其他字符作为分隔符将字符串分成“单词”时,真正的力量就来了。
这是另一个列表。这些是位置。这次纬度和经度嵌入在城市名称后面的字符串中。
|
| 地点 |
|---|
|
| 1600 NEW BERN AVE Raleigh, NC [35.779892815000494, -78.61572674699966] |
|
| 3800 NEW BERN AVE Raleigh, NC [35.79777009600048, -78.57633099599968] |
|
| 3200 CAPITAL BLVD Raleigh, NC [35.822875239000496, -78.58848179699964] |
|
| 700 VARDAMAN ST Raleigh, NC [35.77016025800049, -78.61995064499968] |
|
| 2900 BASSWOOD DR Raleigh, NC [35.74121031600049, -78.60477047599966] |
|
| 1300 CURFMAN ST Raleigh, NC [35.76619700500049, -78.65143264899967] |
|
| 8500 SWARTHMORE DR Raleigh, NC [35.89068092800045, -78.60012101699965] |
|
| 1200 CANYON ROCK CT Raleigh, NC [35.76156160400046, -78.55683519199965] |
|
| 800 GREENWICH ST Raleigh, NC [35.768321829000456, -78.59393748999963] |
|
| 300 ROSELLE CT 罗利,北卡罗来纳州 [35.788000157000454, -78.58367178499964] |
在另一列中包含纬度和经度会很有用。
如果您将方括号视为分隔符,这很简单。你只想要第二个“词”。
字(2,位置,“[]”)
现在,您已获得一列 (LatLong) 字符串,这些字符串的纬度和经度由逗号和空格分隔。
|
| 经纬度 |
|---|
|
| 35.779892815000494, -78.61572674699966 |
|
| 35.79777009600048, -78.57633099599968 |
|
| 35.822875239000496, -78.58848179699964 |
|
| 35.77016025800049, -78.61995064499968 |
|
| 35.74121031600049,-78.60477047599966 |
|
| 35.76619700500049, -78.65143264899967 |
|
| 35.89068092800045,-78.60012101699965 |
|
| 35.76156160400046,-78.55683519199965 |
这单词()功能再次派上用场。这一次,我们要使用逗号和空格作为分隔符。如果我们只使用逗号,那么经度字符串的开头将有一个空格。使用这两个分隔符为我们提供了没有空格的字符串。
纬度
字(1,经纬度,“,”)
经度
字(2,经纬度,“,”)
这些应该通过使用将它们转换为数字来进一步清理数量()功能,但这是另一篇文章的练习。
发挥优势的关键单词()功能是将您的字符串视为“句子”,并抽象地考虑选择分隔符。
这是最后一个例子。假设您有一列批号 (LotNo),中间嵌入了一个名称:
|
| 批号 |
|---|
|
| A30941ALTE69073172 |
|
| A82886ILEAK51521781 |
|
| A54715XSURVXC88997379 |
|
| A7860BATTBC97523479 |
|
| A79004ILEAK52159080 |
|
| A59508ABAEG58962051 |
|
| A44172ILEAK28255713 |
|
| A21319XSURVXC88014800 |
|
| A58308BATTBC49519851 |
|
| A19412C83938451 |
这很困难,因为名称不会出现在每行字符串中的相同位置。如果您在阅读时以与空格相同的方式思考数字,那么名称将成为“第二个”单词。
字(2,批号,“0123456789”)
|
| 名称 |
|---|
|
| 阿尔特 |
|
| 泄漏 |
|
| XSURVXC |
|
| BATTBC |
|
| 泄漏 |
|
| 阿巴耶格 |
|
| 泄漏 |
|
| XSURVXC |
|
| BATTBC |
|
| C |
如果您有时间只学习公式编辑器中 42 个字符函数中的一个,我会从单词()功能。
更新(2013 年 12 月 4 日上午 11:09):这篇文章中的最后一个表格已更新,以更正编辑中引入的错误。
杰夫·帕金森写道:
试试物品()函数代替。它就像 Word() ,只是它将多个分隔符视为每个分隔符定义一个新项目。
李怡成写道:
嗨,杰夫,
如果我有一个字符串 = "1*2*3**5***8" 打算将其拆分为 8 个单独的列而不是 5 个,这意味着双 ** 应被视为具有空数据的一列,而triple *** 应该被视为具有空数据的两列,依此类推,Word 函数有什么解决方法吗?
保罗·萨瓦雷斯写道:
杰夫:很喜欢你关于 WORD 函数的帖子,但对最后一个例子有点困惑。好像有什么地方不对劲。第一个批号是 A30941ALTE69073172,嵌入的“词”显然是 ALTE,但 Word(2, LotNo, "0123456789") 显示为返回值“C”?此外,其他一些批号中嵌入了“XSURVX”字样,但没有任何结果显示它被选中。另外,我没有看到任何批号中嵌入了“VOLT”这个词,但它有两次作为 WORD 功能的结果出现?
谢谢,
保罗 S。