我在文本“data-RowKey = xxx”中有一个字符串名称内容。我试图摆脱XXX所以我尝试了以下内容:如何使用javascript解析字符串中的值?
var val = content.substring(12 + content.indexOf("data-RowKey="), 3);
这并不在所有的工作。而不是只得到三个字符,我得到一个很长的字符串。任何人都可以看到我做错了什么
我在文本“data-RowKey = xxx”中有一个字符串名称内容。我试图摆脱XXX所以我尝试了以下内容:如何使用javascript解析字符串中的值?
var val = content.substring(12 + content.indexOf("data-RowKey="), 3);
这并不在所有的工作。而不是只得到三个字符,我得到一个很长的字符串。任何人都可以看到我做错了什么
.substring()
[MDN]需要两个索引,.substr()
[MDN]取一个索引和长度。尝试:
var val = content.substr(12 + content.indexOf("data-RowKey="), 3);
如果"data-RowKey=xxx"
是整个串,还有许多其他的方式来获得xxx
:
var val = content.replace('data-RowKey=', '');
var val = content.split('=')[1]; // assuming `=` does not appear in xxx
你正在使用错误的工具。当您想要捕捉符合某种模式的数据时,应该使用regular expressions。如果您的值恰好是三个符号,则正确表达式将为/data-RowKey=(...)/
,其中.
代表任何符号,()
指定要捕获的部分。
如果“模式”是静态的,那么绝对不要使用正则表达式。 '-'只是字符类中的特殊字符。 –
确实。固定。对不起,但在我的书中,调用两个单独的对象方法而不是专门写入解析模式的内置工具是“不好的”。直接在字符串索引上操作并不比手动分配内存更好 - 您必须自己跟踪所有内容。在这种情况下,例如,如果没有“data-RowKey =”,它将失败并发生异常。 –
正则表达式比简单的字符串处理方法更昂贵。见http://jsperf.com/string-methods-vs-regex –
如果您rowkey是数字,这可能是最好的,因为你获得整数的数字,不需要稍后转换:
var val = parseInt(content.split("data-RowKey=")[1]);
如果总是三个字符和/或无需转换:
var val = content.split("data-RowKey=")[1].substring(0,3);
如果您提供的'content'的例子,我们也许能够提供更好的方法。 –