我有一个data-123
字符串。
data-
离开时如何从字符串中删除123
?
var ret = "data-123".replace('data-','');
console.log(ret); //prints: 123
对于要丢弃的所有事件,请使用:
var ret = "data-123".replace(/data-/g,'');
PS:replace函数返回一个新字符串,原字符串不变,所以使用replace()调用后的函数返回值。
这与 jQuery 没有任何关系。replace
您可以为此使用 JavaScript函数:
var str = "data-123";
str = str.replace("data-", "");
您还可以将正则表达式传递给此函数。在以下示例中,它将替换除数字以外的所有内容:
str = str.replace(/[^0-9\.]+/g, "");
如果您事先知道需要从原始字符串中切出多少个字符,则可以使用 slice()。它返回给定起点到终点之间的字符。
string.slice(start, end);
以下是一些展示其工作原理的示例:
var mystr = ("data-123").slice(5); // This just defines a start point so the output is "123"
var mystr = ("data-123").slice(5,7); // This defines a start and an end so the output is "12"
普通的旧 JavaScript 就足够了——对于这样一个简单的任务,jQuery 不是必需的:
var myString = "data-123";
var myNewString = myString.replace("data-", "");
有关更多信息和用法,请参阅:.replace()
MDN 上的文档。
前任:-
var value="Data-123";
var removeData=value.replace("Data-","");
alert(removeData);
希望这对你有用。
我做的这个小功能一直对我有用:)
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!!
我知道这不是最好的,但它一直对我有用:)
str.split('Yes').join('No');
这将从原始字符串中替换该特定字符串的所有出现。
我习惯了 C# (Sharp) String.Remove 方法。在 Javascript 中,没有字符串的删除函数,但有 substr 函数。您可以使用 substr 函数一次或两次从字符串中删除字符。您可以使用以下函数将开始索引处的字符删除到字符串的末尾,就像 c# 方法首先重载 String.Remove(int startIndex) 一样:
function Remove(str, startIndex) {
return str.substr(0, startIndex);
}
和/或您还可以使用以下函数来删除起始索引和计数处的字符,就像 c# 方法第二个重载 String.Remove(int startIndex, int count) 一样:
function Remove(str, startIndex, count) {
return str.substr(0, startIndex) + str.substr(startIndex + count);
}
然后您可以根据需要使用这两个功能或其中之一!
例子:
alert(Remove("data-123", 0, 5));
输出:123
使用match()
andNumber()
返回一个number
变量:
Number(("data-123").match(/\d+$/));
// strNum = 123
这就是上面的语句所做的......在中间工作:
str.match(/\d+$/)
- 返回一个数组,其中包含与 . 结尾处任意长度数字的匹配项str
。在这种情况下,它返回一个包含单个字符串 item 的数组['123']
。Number()
- 将其转换为数字类型。因为从返回的数组.match()
包含单个元素Number()
将返回数字。今天 2021.01.14,我在 Chrome v87、Safari v13.1.2 和 Firefox v84 上对 MacOs HighSierra 10.13.6 进行测试,以获取所选解决方案。
适用于所有浏览器
我执行 2 个测试用例:
下面的片段展示了解决方案 Aa Ab Ba Bb Ca Cb Da 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 的示例结果
1-如果是您的字符串中的序列:
let myString = "mytest-text";
let myNewString = myString.replace("mytest-", "");
答案是文字
2-如果您想删除前 3 个字符:
"mytest-text".substring(3);
答案是 est-text
替换字符串的所有实例的另一种方法是使用新的(截至 2020 年 8 月)String.prototype.replaceAll()
方法。
它接受字符串或 RegEx 作为其第一个参数,并将找到的所有匹配项替换为其第二个参数(字符串或生成字符串的函数)。
就支持而言,在撰写本文时,此方法已在所有主要桌面浏览器*(甚至 Opera!)的当前版本中采用,IE 除外。对于移动设备,还支持 iOS Safari iOS 13.7 + 、Android Chrome v85+和 Android Firefox v79+。
* 这包括 Edge/Chrome v85+、Firefox v77+、Safari 13.1+ 和 Opera v71+
用户更新到受支持的浏览器版本需要时间,但现在有了广泛的浏览器支持,时间是唯一的障碍。
参考:
您可以在下面的代码段中测试您当前的浏览器:
//Example coutesy of MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replaceAll
const p = 'The quick brown fox jumps over the lazy dog. If the dog reacted, was it really lazy?';
const regex = /dog/gi;
try {
console.log(p.replaceAll(regex, 'ferret'));
// expected output: "The quick brown fox jumps over the lazy ferret. If the ferret reacted, was it really lazy?"
console.log(p.replaceAll('dog', 'monkey'));
// expected output: "The quick brown fox jumps over the lazy monkey. If the monkey reacted, was it really lazy?"
console.log('Your browser is supported!');
} catch (e) {
console.log('Your browser is unsupported! :(');
}
.as-console-wrapper: {
max-height: 100% !important;
}
确保如果您在循环中替换字符串,则在每次迭代中启动一个新的正则表达式。截至 21 年 9 月 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___');
})