错误对象到字符串
Error object to string
我想使用正则表达式来处理错误消息。。。
try {
throw new Error("Foo 'bar'");
} catch (err) {
console.log(getInQuotes(err));
}
其中getInQuotes是字符串的函数:
var getInQuotes = function(str) {
var re;
re = /'([^']+)'/g;
return str.match(re);
};
但出现错误:
Object Error: Foo 'bar' has no method 'match'
尽管它适用于通常的字符串:
console.log(getInQuotes("Hello 'world'"));
结果:
[ '''world''' ]
已尝试字符串化错误对象。。。
console.log("stringify: " + JSON.stringify(err));
但它是空的:
stringify: {}
您创建了一个Error对象,但它不是字符串。但您可以简单地通过调用其toString
方法来解决此问题,并对其结果应用匹配:
function getInQuotes(err) {
var re;
re = /'([^']+)'/g;
return err.toString().match(re);
};
基本上,我们在这里尝试获得带注释的字符串。如果我们使用正则表达式,那么如果确实需要的话,我们需要一个正确的情况。
如果没有,下面的字符串替换将是更容易的解决方案。
// Arrow Function read given string and strip quoted values.
// Basic example
const getInQuotes = (str) => str.replace( /^[^']*'|'.*/g, '' );
为了让它更通用。下面的函数有助于保持这个注释器(')是可配置的。以下代码是最新的ES2021代码。
- 这在RegExp函数中使用模板文字
- 注释器是可配置的
- 将方法名称CCD_ 2更改为CCD_
- 方法始终返回数组,以保持其可预测性并避免其他错误
- 最好不要传递整个对象,因为它只需要错误消息
function getAnnotatedStrings(errorMessage, annotator = "'") {
if (!annotator || !errorMessage) return []
const regex = new RegExp(`${annotator}([^']+)${annotator}`, 'g')
return errorMessage.toString().match(regex);
}
ES2021代码中的实际值。
try {
throw new Error("Foo 'bar'");
} catch (e) {
console.log(getAnnotatedStrings(e?.message)); // outputs - bar
}
参考:错误对象简介
Regex函数和基础
模板文字
err
不是字符串,它是Error
对象,因此没有.match()
函数。您应该使用Error
对象的toString()
方法调用函数,方法如下:
try {
throw new Error("Foo 'bar'");
}
catch (err) {
console.log(getInQuotes(err.toString()));
}
试试这个http://jsfiddle.net/B6gMS/1/
getInQuotes(err.message)
相关文章:
- 字符串对象类型或基元类型也是如此
- Javascript-如何从字符串/对象引用回调
- JavaScript,字符串/对象操作的例外
- 如何在require中传递字符串/对象
- 字符串对象比较总是返回false
- 对字符串对象调用 .localeCompare 与构造特制的 Intl.Collator 对象之间的性能差异
- 将变量打印到控制台时出现意外字符串:[对象窗口]
- 如何使用javascript在字符串对象中添加原型
- 如何在 JavaScript 中设置/更新字符串对象的值
- jQuery:在 $.each 中从字符串类型转换为字符串对象
- 将属性添加到字符串对象时出现问题
- 从字符串对象中删除第一个出现的字母
- 如何正确地将JQuery函数从表单的输入标记中检索到的这些字符串对象转换为数字
- 转换“;字符串对象“;到对象
- Javascript中字符串对象到字符串原语的转换
- JavaScript符号类型:(非字符串对象键)
- 正在重新定义字符串对象中的长度属性
- 带有字符串对象的jQuery选择器不起作用
- 如何在javascript中将JSON字符串对象打印为下拉列表
- 将日期字符串对象转换为其他格式