在复杂字符串中的另一个字符串之后提取字符串

时间:2019-09-01 08:21:42

标签: javascript

我有这个字符串-

ContactTrigger: execution of AfterInsert

caused by: System.DmlException: Update failed. First exception on row 0 with id 0032200000AYK5AAAX; first error: FIELD_CUSTOM_VALIDATION_EXCEPTION, Spouse Cannot be more than 1: []

Class.ContactTriggerHelper.updateDependentData: line 309, column 1
Trigger.ContactTrigger: line 26, column 1

我需要确定此字符串是否包含FIELD_CUSTOM_VALIDATION_EXCEPTION,并且需要提取消息“ Spouse不能超过1”的这一部分

我不能

我尝试过-

      var pageErrors = saveResult.error[0].pageErrors[0].message;
                     console.log('pageErrors--->'+pageErrors);
                    var errMessage;
                    if(pageErrors.includes('FIELD_CUSTOM_VALIDATION_EXCEPTION')){
                        console.log('Inside includes');
                        console.log('pageErrors.indexOf("FIELD_CUSTOM_VALIDATION_EXCEPTION")-->'+pageErrors.indexOf('FIELD_CUSTOM_VALIDATION_EXCEPTION'));
                        console.log('pageErrors.lastIndexOf("FIELD_CUSTOM_VALIDATION_EXCEPTION")-->'+pageErrors.lastIndexOf('FIELD_CUSTOM_VALIDATION_EXCEPTION,'));
                        errMessage = pageErrors.substring(pageErrors.indexOf('FIELD_CUSTOM_VALIDATION_EXCEPTION'),pageErrors.lastIndexOf('FIELD_CUSTOM_VALIDATION_EXCEPTION,'));
                    }

2 个答案:

答案 0 :(得分:1)

您可以尝试

FIELD_CUSTOM_VALIDATION_EXCEPTION,\s*([^:]+)

enter image description here

let findValue = (str) => {
  return str.match(/FIELD_CUSTOM_VALIDATION_EXCEPTION,\s*([^:]+)/i)
}

let str = `ContactTrigger: execution of AfterInsert

caused by: System.DmlException: Update failed. First exception on row 0 with id 0032200000AYK5AAAX; first error: FIELD_CUSTOM_VALIDATION_EXCEPTION, Spouse Cannot be more than 1: []

Class.ContactTriggerHelper.updateDependentData: line 309, column 1 Trigger.ContactTrigger: line 26, column 1`

console.log(findValue(str))
console.log(findValue(str)[1])

let str2 = `ContactTrigger: execution of AfterInsert

caused by: System.DmlException: Update failed. First exception on row 0 with id 0032200000AYK5AAAX;

Class.ContactTriggerHelper.updateDependentData: line 309, column 1 Trigger.ContactTrigger: line 26, column 1`

console.log(findValue(str2))

答案 1 :(得分:0)

您甚至可以执行比正则表达式更简单,更快速的操作。由于您知道确切的错误消息,因此您可以将错误字符串从错误消息末尾到行尾或最多":"个字符进行分割(如果需要删除周围的空间,也可以选择对其进行修剪)。

所以:

const str = `ContactTrigger: execution of AfterInsert

caused by: System.DmlException: Update failed. First exception on row 0 with id 0032200000AYK5AAAX; first error: FIELD_CUSTOM_VALIDATION_EXCEPTION, Spouse Cannot be more than 1: []

Class.ContactTriggerHelper.updateDependentData: line 309, column 1 Trigger.ContactTrigger: line 26, column 1`;

const ERR = 'FIELD_CUSTOM_VALIDATION_EXCEPTION,';
const ind = str.indexOf(ERR);
let msg = -1 < ind ? str.slice(ind+ERR.length, str.indexOf("\n",ind+ERR.length)) : null;
msg = msg ? msg.trim() : null; // optionally trim it as well
console.log(str);
console.log(msg);

相关问题