2

看起来这确实是一件简单的事情(它可能是),但我试图获取列的字符串数据,然后通过计算列,用 %20 替换所有空格,以便 HTML 链接在工作流产生的电子邮件实际上不会在第一个空格处中断。

例如,我们在源列中有这个:

file:///Z:/data/这是我们的report.rpt

并希望在计算列中结束:

file:///Z:/data/This%20is%20our%20report.rpt

已经用过REPLACE了,编了一个可怕的超级嵌套的REPLACE/SEARCH版本,但问题是你必须为每个潜在空间嵌套,如果你不知道前面有多少,那就不行了,或者会错过一些。

你们中有人遇到过这种情况吗?你们是如何处理的?

提前致谢!

4

4 回答 4

5

据我所知,没有使用计算列语法的通用解决方案。这种情况的标准解决方案是使用 ItemAdded (/ItemUpdated) 事件并从代码初始化字段值。

于 2009-03-31T19:09:13.260 回答
1

通过使用一系列计算列,我能够根据我的情况解决这个问题。

在第一个计算列 (C1) 中,我输入了一个公式来删除第一个空格,如下所示:

=IF(ISNUMBER(FIND(" ",[Title])),REPLACE([Title],FIND(" ",[Title]),1,"%20"),[Title])

在第二个计算列 (C2) 中,我使用了:

=IF(ISNUMBER(FIND(" ",[C1])),REPLACE([C1],FIND(" ",[C1]),1,"%20"),[C1]).

就我而言,我想编码最多四个空格,所以我以相同的方式使用了 3 个计算列(C1、C2、C3)并得到了所需的结果。

这不如使用单个计算列高效,但如果SUBSTITUTE在您的 SharePoint 环境中不起作用,并且您不能使用事件处理程序或工作流,它可能会提供一个可行的替代方案。

我实际上使用了一个稍微不同的公式,但它是在我目前无法访问的工作机器上,所以我只是从一个类似的 SO 问题中获取了这个公式。任何将第一次出现的空格替换为 "%20" 的公式都可以使用,诀窍是 a) 如果公式中没有更多空格,请确保公式返回原始字符串不变,并且 b) 测试,测试, 测试。创建一个列表视图,其中包含您尝试编码的字段以及计算的字段,并查看您是否获得了所需的结果。

于 2017-04-02T14:30:56.947 回答
0

这样工作流中生成的电子邮件中的 HTML 链接实际上不会在第一个空格处中断。

仅当您没有将链接括在引号中时,浏览器才会执行此操作

如果将链接用引号括起来,它不会第一个空格处被切断

在 SharePoint 公式中,它将是:

="""file:///Z:/data/This is our report.rpt"""

因为两个引号是输出引号的 SP 转义符号

于 2017-05-13T09:18:40.463 回答
0

您可以使用此公式(开始修剪为 1,在我的情况下为 4):

=IF(ISBLANK([EUR Amount]),"",(TRIM(MID([EUR Amount],4,2))&TRIM(MID([EUR Amount],6,2))&TRIM(MID([EUR Amount],8,2))&TRIM(MID([EUR Amount],10,2))&TRIM(MID([EUR Amount],12,2))&TRIM(MID([EUR Amount],14,2)))*1)
于 2019-05-22T14:06:48.693 回答