我有一个以data-123
为值的字符串。在将data-
留在jQuery或JavaScript中时,如何从字符串中删除123
?
答案 0 :(得分:880)
不需要jQuery。
var ret = "data-123".replace('data-','');
console.log(ret); //prints: 123
对于要丢弃的所有事件,请使用:
var ret = "data-123".replace(/data-/g,'');
PS:replace函数返回一个新字符串并保持原始字符串不变,因此在replace()调用之后使用函数返回值。
答案 1 :(得分:108)
这与jQuery没有任何关系。您可以使用JavaScript replace
函数:
var str = "data-123";
str = str.replace("data-", "");
您也可以将正则表达式传递给此函数。在下面的示例中,它将替换除数字之外的所有内容:
str = str.replace(/[^0-9\.]+/g, "");
答案 2 :(得分:43)
如前所述,您可以使用"data-123".replace('data-','');
,但如果您的字符串类似于replace()
,"data-123data-"
只会替换匹配文字的 FIRST 实例然后
"data-123data-".replace('data-','');
只会替换第一个匹配的文字。您的输出将为"123data-"
因此,如果您希望在字符串中替换所有文本匹配项,则必须使用带有g
标记的正则表达式:
"data-123data-".replace(/data-/g,'');
您的输出将为"123"
答案 3 :(得分:25)
你可以使用slice()它在开始到结束(包含的终点)之间返回字符
string.slice(start , end);
这是一个展示其工作原理的示例:
var mystr = ("data-123").slice(5); // jast define start point so output is "123"
var mystr = ("data-123").slice(5,7); // define start and end so output is "12"
var mystr=(",246").slice(1); // returens "246"
答案 4 :(得分:15)
普通的旧JavaScript就足够了 - 对于这么简单的任务,jQuery不是必需的:
var myString = "data-123";
var myNewString = myString.replace("data-", "");
有关其他信息和用法,请参阅: .replace()
docs on MDN。
答案 5 :(得分:14)
<强>例如: - 强>
var value="Data-123";
var removeData=value.replace("Data-","");
alert(removeData);
希望这对你有用。
答案 6 :(得分:8)
我习惯了C#(Sharp)String.Remove方法。 在Javascript中,字符串没有删除函数,但有substr函数。 您可以使用substr函数一次或两次从字符串中删除字符。 你可以使用以下函数来删除字符串末尾的起始索引处的字符,就像c#方法首先重载String.Remove(int startIndex):
function Remove(str, startIndex) {
return str.substr(0, startIndex);
}
和/或你也可以使用以下函数来删除start index和count处的字符,就像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
答案 7 :(得分:8)
我做的这个小功能一直对我有用:)
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 the cool!!";
string.deleteWord('the'); // Returns text is cool!!
我知道这不是最好的,但它一直对我有用:)
答案 8 :(得分:6)
使用match()
和Number()
返回number
变量:
Number(("data-123").match(/\d+$/));
// strNum = 123
以上是上述声明......中间工作:
str.match(/\d+$/)
- 返回一个数组,其中包含str
末尾任意数字长度的匹配项。在这种情况下,它返回一个包含单个字符串项['123']
的数组。Number()
- 将其转换为数字类型。因为从.match()
返回的数组包含单个元素Number()
将返回该数字。答案 9 :(得分:6)
str.split('Yes').join('No');
这将替换原始字符串中所有特定字符串的出现。
答案 10 :(得分:5)
今天 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 的示例结果
答案 11 :(得分:1)
替换字符串的所有实例的另一种方法是使用新的字符串(截至2020年8月)String.prototype.replaceAll()
method。
它接受字符串或RegEx作为其第一个参数,并将找到的所有匹配项替换为其第二个参数,即字符串或生成字符串的函数。
据支持,在撰写本文时,此方法已在除IE之外的所有主要桌面浏览器*(甚至是Opera!)的当前版本中采用。对于移动设备,还支持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;
}