Triggers Salesforce Apex:计算文本字段中的换行数

Triggers Salesforce Apex:计算文本字段中的换行数,triggers,salesforce,apex-code,soql,apex,Triggers,Salesforce,Apex Code,Soql,Apex,我想创建一个触发器和/或类,用于计算Salesforce.com中长文本字段中的换行次数 如果我将调试消息改为将commentsLength写入自定义字段,此逻辑是否有效 public with sharing class TaskCommentsCount { Integer commentsLength = 0; for(Task t : [Select Comments From Task]){ List<String> lines = t.Comments.split('\

我想创建一个触发器和/或类,用于计算Salesforce.com中长文本字段中的换行次数

如果我将调试消息改为将commentsLength写入自定义字段,此逻辑是否有效

public with sharing class TaskCommentsCount {
Integer commentsLength = 0;

for(Task t : [Select Comments From Task]){
List<String> lines = t.Comments.split('\n');
commentsLength += lines.size();
}

system.debug('Comments lines: ' + commentsLength);

}
public与共享类TaskCommentsCount{
整数注释长度=0;
对于(任务t:[从任务中选择注释]){
列表行=t.Comments.split('\n');
commentsLength+=lines.size();
}
调试('注释行:'+注释长度);
}

我假设您将此逻辑更改为在触发器中工作

从逻辑上讲,您的拆分应该可以工作,但您需要稍微重新构建它以处理批量事务。您的最佳选择可能是使用“插入前,更新前”。那么,您的伪代码将是:

Loop over Trigger.new
  Split on \n
  Set comment_length field to size of collection

通过使用before,只要处理Trigger.new中的元素,实际上就不必显式地进行后续保存调用。此上下文还允许您处理具有多个任务的触发器。

您的触发器/类有多旧?今年的某个时候(2013年春季发行?)
String
类得到了重大升级,现在我们有了
countMatches()
方法


也许您只需要升级API版本就可以在触发器中使用它。

并非100%准确,“免费保存”仅在“插入前/更新前”上下文中有效。试图在“after”上下文中修改它会给您一个错误,即记录现在是只读的。@我想我已经提到了,但可能我提到的其他内容已经关闭了。当更新同一记录上的字段时,使用“after”触发器没有意义。答案很好,但我必须向eyescream道具,因为它告诉我countMatches()方法,这大大简化了我在这个应用程序中的代码。