Re: 如何判断一个字符串是否有重复字符并提取出来?这是摆脱重复的一种方法
theList = Words( "abp-g5.GAIV_0099_P013_GAIV_0099_P013", "_." );
For( i = N Items( theList ), i >= 1, i--,
If( N Rows( Loc( theList, theList[i] ) ) > 1,
Remove From( theList, i, 1 )
)
);
newName = theList[1] || "." || theList[2];
For( i = 3, i <= N Items( theList ), i++,
newName = newName || "_" || theList[i]
);
Re: 如何判断一个字符串是否有重复字符并提取出来?几个问题:
- 你认为什么是“词”? 用“_”和“.”分隔的任何东西?
- 如果有多个重复项怎么办? 是否全部提取/仅最短/仅最长/无?
- 重复可以发生在字符串中的任何一点吗? 重复的部分总是在最后吗?
Re: 如何判断一个字符串是否有重复字符并提取出来?谢谢,你的方法很好!
Re: 如何判断一个字符串是否有重复字符并提取出来?谢谢,这确实是一个实际问题::
每当该字符中有 GAI 时,无论出现多少次,只要重复出现,就提取以它开头的字符之一。
而且肯定会有重复的。
Re: 如何判断一个字符串是否有重复字符并提取出来?这是个有趣的问题。 我喜欢@txnelson的解决方案。 除了他的方法,这是正则表达式可以得心应手的情况,所以这里是另一种方法。
提供的两个示例具有以下模式:
- 可能存在前缀,例如“abp-g5”。
- 所需的字符串/字符在前缀之后
- 重复/重复的字符与所需的字符串/字符完全匹配
- 重复/重复的字符通过下划线与所需字符分隔
- 除了字符串末尾的重复字符外,别无其他
- 至少存在一个重复/重复的字符串/字符
假设这些规则准确定义了需要更改的列名,下面的代码将更新“当前数据表”中所有符合上述假设的列名。 不符合假设的列名将不会更改。
names default to here(1);
dt = current data table();
for( k = 1, k <= n cols(dt), k++,
colName = column(dt, k) << get name();
colName = regex( colName, "^.*?(.+)(?:_\1)+$", "\1" );
try( column(dt, k) << set name( colName ) );
);
如何判断一个字符串是否有重复字符并提取出来?我现在有一个包含 1000 多个列的表,并且大多数列名都有重复的单词需要提取。 请教大佬们,用JSL如何实现呢?
例如:
列名为abp-g5.GAIV_0099_P013_GAIV_0099_P013,然后提取GAIV_0099_P013;
列名是abp-g5.GAI1997_GAI1997,然后提取GAI1997
自动化和脚本编写苹果系统大规模定制