我得到了一个data-123字符串。
我如何删除数据-从字符串,而离开123?
我得到了一个data-123字符串。
我如何删除数据-从字符串,而离开123?
当前回答
我做的这个小函数一直很适合我:)
String.prototype.deleteWord = function (searchTerm) {
var str = this;
var n = str.search(searchTerm);
while (str.search(searchTerm) > -1) {
n = str.search(searchTerm);
str = str.substring(0, n) + str.substring(n + searchTerm.length, str.length);
}
return str;
}
// Use it like this:
var string = "text is the cool!!";
string.deleteWord('the'); // Returns text is cool!!
我知道这不是最好的,但它一直对我有效:)
其他回答
var ret =“data-123”。 游戏机。log(雷特);/ / prints: 123
文档。
对于所有被丢弃的事件使用:
var ret = "data-123".replace(/data-/g,'');
PS: replace函数返回一个新字符串并保持原始字符串不变,因此在replace()调用之后使用函数返回值。
性能
今天2021.01.14我在Chrome v87, Safari v13.1.2和Firefox v84上对所选解决方案的MacOs HighSierra 10.13.6进行测试。
结果
适用于所有浏览器
解决方案Ba, Cb和Db是快速/最快的长字符串 解决方案Ca, Da是快速/最快的短字符串 Ab解和E解对于长弦是缓慢的 Ba, Bb和F解对于短弦是缓慢的
细节
我执行2个测试用例:
短字符串- 10个字符-你可以在这里运行它 长字符串- 100万个字符-你可以在这里运行它
下面的代码片段给出了解决方案 Aa Ab 英航 Bb Ca Cb 达 Db E F
// https://stackoverflow.com/questions/10398931/how-to-strToRemove-text-from-a-string // https://stackoverflow.com/a/10398941/860099 function Aa(str,strToRemove) { return str.replace(strToRemove,''); } // https://stackoverflow.com/a/63362111/860099 function Ab(str,strToRemove) { return str.replaceAll(strToRemove,''); } // https://stackoverflow.com/a/23539019/860099 function Ba(str,strToRemove) { let re = strToRemove.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // regexp escape char return str.replace(new RegExp(re),''); } // https://stackoverflow.com/a/63362111/860099 function Bb(str,strToRemove) { let re = strToRemove.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // regexp escape char return str.replaceAll(new RegExp(re,'g'),''); } // https://stackoverflow.com/a/27098801/860099 function Ca(str,strToRemove) { let start = str.indexOf(strToRemove); return str.slice(0,start) + str.slice(start+strToRemove.length, str.length); } // https://stackoverflow.com/a/27098801/860099 function Cb(str,strToRemove) { let start = str.search(strToRemove); return str.slice(0,start) + str.slice(start+strToRemove.length, str.length); } // https://stackoverflow.com/a/23181792/860099 function Da(str,strToRemove) { let start = str.indexOf(strToRemove); return str.substr(0, start) + str.substr(start + strToRemove.length); } // https://stackoverflow.com/a/23181792/860099 function Db(str,strToRemove) { let start = str.search(strToRemove); return str.substr(0, start) + str.substr(start + strToRemove.length); } // https://stackoverflow.com/a/49857431/860099 function E(str,strToRemove) { return str.split(strToRemove).join(''); } // https://stackoverflow.com/a/45406624/860099 function F(str,strToRemove) { var n = str.search(strToRemove); while (str.search(strToRemove) > -1) { n = str.search(strToRemove); str = str.substring(0, n) + str.substring(n + strToRemove.length, str.length); } return str; } let str = "data-123"; let strToRemove = "data-"; [Aa,Ab,Ba,Bb,Ca,Cb,Da,Db,E,F].map( f=> console.log(`${f.name.padEnd(2,' ')} ${f(str,strToRemove)}`)); This shippet only presents functions used in performance tests - it not perform tests itself!
这里是chrome的示例结果
使用match()和Number()返回一个数字变量:
Number(("data-123").match(/\d+$/));
// strNum = 123
下面是上面这句话的作用……工作中间向外:
str.match(/\d+$/) -返回一个数组,该数组包含str结尾任意长度的数字的匹配。在这种情况下,它返回一个包含单个字符串项['123']的数组。 Number() -将其转换为数字类型。因为从.match()返回的数组包含单个元素Number()将返回该数字。
如果要替换循环中的字符串,请确保在每次迭代中初始化一个新的Regex。截至9/21/21,这仍然是一个已知的问题,Regex基本上错过了每一个其他匹配。当我第一次遇到这个问题时,我大吃一惊:
yourArray.forEach((string) => {
string.replace(new RegExp(__your_regex__), '___desired_replacement_value___');
})
如果你试着这样做,不要惊讶,如果只有其他所有的工作
let reg = new RegExp('your regex');
yourArray.forEach((string) => {
string.replace(reg, '___desired_replacement_value___');
})
str.split('Yes').join('No');
这将从原始字符串中替换该特定字符串的所有出现。