如何从JavaScript中删除字符串中的文本?

时间:2012-05-01 14:12:39

标签: javascript jquery string replace

我有一个以data-123为值的字符串。在将data-留在jQuery或JavaScript中时,如何从字符串中删除123

12 个答案:

答案 0 :(得分:880)

不需要jQuery。

var ret = "data-123".replace('data-','');
console.log(ret);   //prints: 123

Docs.


对于要丢弃的所有事件,请使用:

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-"

DEMO

因此,如果您希望在字符串中替换所有文本匹配项,则必须使用带有g标记的正则表达式:

"data-123data-".replace(/data-/g,'');

您的输出将为"123"

DEMO2

答案 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"

Demo

答案 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

以上是上述声明......中间工作:

  1. str.match(/\d+$/) - 返回一个数组,其中包含str末尾任意数字长度的匹配项。在这种情况下,它返回一个包含单个字符串项['123']的数组。
  2. 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 上执行测试。

结果

适用于所有浏览器

  • 对于长字符串,Ba、Cb 和 Db 的解决方案最快/最快
  • 对于短字符串,Ca、Da 的解决方案最快/最快
  • 对于长字符串,Ab 和 E 的解决方案很慢
  • 对于短字符串,Ba、Bb 和 F 的解决方案很慢

enter image description here

详情

我执行了 2 个测试用例:

  • 短字符串 - 10 个字符 - 您可以运行它 HERE
  • 长字符串 - 1 000 000 个字符 - 您可以运行它HERE

下面的代码片段提供了解决方案 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 的示例结果

enter image description here

答案 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;
}