如何从javascript的字符串数组中删除字符的模式
How to remove a pattern of characters from an array of strings in javascript?
实时代码
我有一个字符串数组。每个字符串代表一个路径。我需要在此路径中删除区域设置代码之前的所有内容。我想返回一个新的干净路径数组
问题:如何编写和使用arr.filter()
到match()
,然后从原始字符串中删除所有区域设置的模式
var thingy = ['thing/all-br/home/gosh-1.png','thing/ar_all/about/100_gosh.png','thing/br-pt/anything/a_noway.jpg'];
var reggy = new RegExp('/[a-z]{2}-[a-z]{2}|[a-z]{2}_[a-z]{2}/g');
var newThing = thingy.filter(function(item){
return result = item.match(reggy);
});
最后,我想将原始数组thingy
过滤到newThing
,输出应该是这样的:
console.log(newThing);
// ['home/gosh1.png','about/gosh.png','place/1noway.jpg']
如果你想转换数组中的项目,filter
不是正确的工具;map
是你使用的工具。
它看起来就像你只想去掉路径的中间部分:
var thingy = ['home/all-br/gosh1.png', 'about/ar_all/gosh.png', 'place/br-pt/noway.jpg'];
var newThing = thingy.map(function(entry) {
return entry.replace(/'/[^'/]+/, '');
});
snippet.log(JSON.stringify(newThing));
<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="//tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
使用/'/[^'/]+/
,它匹配斜杠后面的任何非斜杠序列,然后使用String#replace
将其替换为空白字符串。
如果你想使用捕获组来捕获你想要的片段,你会做同样的事情,只是改变你在map
回调中做的事情,并让它返回你想要的字符串。
只是一个稍微改变的例子,这里有一个类似的东西,捕获第一个和最后一个片段并重新组装它们,而不包含中间的部分:
var thingy = ['home/all-br/gosh1.png', 'about/ar_all/gosh.png', 'place/br-pt/noway.jpg'];
var newThing = thingy.map(function(entry) {
var match = entry.match(/^([^'/]+)'/.*'/([^'/]+)$/);
return match ? match[1] + "/" + match[2] : entry;
});
snippet.log(JSON.stringify(newThing));
<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="//tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
相关文章:
- 为什么以下正则表达式不删除 ## 字符
- javascript使用for循环从多个字符串中删除字符
- 使用Jquery Keydown函数删除字符
- 使用 Javascript 正则表达式删除字符后的所有内容
- 如何在 DOM 加载后使用 JavaScript 或 JQuery 从 href 属性中删除字符
- nl2br jQuery函数从每行中删除字符
- 如何通过javascript在文本区域中插入/删除字符
- 如何从 html 属性值中删除字符
- 如果文本以这些字符开头或结尾,请删除字符
- 如何按位置号从字符串中删除字符
- 单击按钮时删除字符,除非输入值为0
- 删除字符“”$"从产品的角度来看
- 如何从字符串中删除字符
- 只有当JavaScript中的子字符串长度大于x时,才从子字符串中删除字符
- 由于Javascript,Backspace(删除字符)在Firefox中无法正常工作
- JavaScript删除字符前的所有文本
- 如何在用户输入javascript时删除字符
- 从字符串javascript算法中删除字符
- 从javascript数组内的对象中删除字符
- JSON 字符串删除字符