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

Mic*_*sby 493 javascript string

我有一个data-123有价值的字符串.怎么进入data-或者123我会在data-123离开时从弦中取出data-

Mat*_*ics 1013

不需要jQuery.

var ret = "data-123".replace('data-','');
console.log(ret);   //prints: 123
Run Code Online (Sandbox Code Playgroud)

文档.


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

var ret = "data-123".replace(/data-/g,'');
Run Code Online (Sandbox Code Playgroud)

PS:replace函数返回一个新字符串并保持原始字符串不变,因此在replace()调用后使用函数返回值.

  • 对于要丢弃的所有事件,您可以使用“replaceAll” (2认同)

Jam*_*son 119

这与jQuery没有任何关系.您可以使用JavaScript replace函数:

var str = "data-123";
str = str.replace("data-", "");
Run Code Online (Sandbox Code Playgroud)

您也可以将正则表达式传递给此函数.在下面的示例中,它将替换除数字之外的所有内容:

str = str.replace(/[^0-9\.]+/g, "");
Run Code Online (Sandbox Code Playgroud)

  • @rotimi-best `[^0-9\.]` 意味着它将捕获任何*不是*数字或句点的字母。请注意第一个方括号后面的插入符号。 (2认同)

laa*_*sto 52

"data-123".replace('data-','');如上所述,您可以使用,但replace()只替换匹配文本的FIRST实例,如果您的字符串是那样的"data-123data-"

"data-123data-".replace('data-','');
Run Code Online (Sandbox Code Playgroud)

只会替换第一个匹配的文本.你的输出将是"123data-"

DEMO

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

"data-123data-".replace(/data-/g,'');
Run Code Online (Sandbox Code Playgroud)

你的输出将是 "123"

DEMO2


m.r*_*aei 26

你可以使用slice()它在开始到结束之间(包括终点)重新计算字符

   string.slice(start , end);
Run Code Online (Sandbox Code Playgroud)

这里有一些exmp来展示它是如何工作的:

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"
Run Code Online (Sandbox Code Playgroud)

演示


小智 22

1-如果是字符串中的序列:

let myString = "mytest-text";
let myNewString = myString.replace("mytest-", "");
Run Code Online (Sandbox Code Playgroud)

答案是文字

2- 如果您想删除前 3 个字符:

"mytest-text".substring(3);
Run Code Online (Sandbox Code Playgroud)

答案是 est-text


Jam*_*ill 21

简单的旧JavaScript就足够了 - 对于这么简单的任务,jQuery不是必需的:

var myString = "data-123";
var myNewString = myString.replace("data-", "");
Run Code Online (Sandbox Code Playgroud)

有关 其他信息和用法,请参阅:.replace()MDN上的文档.


小智 16

例如: -

var value="Data-123";
var removeData=value.replace("Data-","");
alert(removeData);
Run Code Online (Sandbox Code Playgroud)

希望这对你有用.


小智 9

我习惯了C#(Sharp)String.Remove方法.在Javascript中,字符串没有删除函数,但有substr函数.您可以使用substr函数一次或两次从字符串中删除字符.你可以使用以下函数来删除字符串末尾的起始索引处的字符,就像c#方法首先重载String.Remove(int startIndex):

function Remove(str, startIndex) {
    return str.substr(0, startIndex);
}
Run Code Online (Sandbox Code Playgroud)

和/或你也可以使用以下函数来删除start index和count处的字符,就像c#方法第二次重载一样String.Remove(int startIndex,int count):

function Remove(str, startIndex, count) {
    return str.substr(0, startIndex) + str.substr(startIndex + count);
}
Run Code Online (Sandbox Code Playgroud)

然后您可以使用这两个功能或其中一个满足您的需求!

例:

alert(Remove("data-123", 0, 5));
Run Code Online (Sandbox Code Playgroud)

输出:123


小智 9

我做的这个小功能一直对我有用:)

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!!
Run Code Online (Sandbox Code Playgroud)

我知道这不是最好的,但它一直对我有用:)


s.h*_*sam 9

2024 年更新

有很多方法可以解决这个问题,但我相信这是最简单的:

const newString = string.split("data-").pop();
console.log(newString); /// 123
Run Code Online (Sandbox Code Playgroud)


ARC*_*ARC 7

str.split('Yes').join('No'); 
Run Code Online (Sandbox Code Playgroud)

这将替换原始字符串中所有该特定字符串的出现。


Bre*_*ody 6

使用match()Number()返回number变量:

Number(("data-123").match(/\d+$/));

// strNum = 123
Run Code Online (Sandbox Code Playgroud)

以下是上述陈述的内容......中间工作:

  1. str.match(/\d+$/)- 返回一个数组,其中包含与末尾任意长度的数字匹配的数组str.在这种情况下,它返回一个包含单个字符串项的数组['123'].
  2. Number() - 将其转换为数字类型.因为从.match()包含单个元素Number()返回的数组将返回该数字.


Kam*_*ski 6

表现

今天 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 个字符 - 你可以在这里运行它
  • 长字符串 - 1 000 000 个字符 - 你可以在这里运行

下面的片段给出了解决方案 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)}`));
Run Code Online (Sandbox Code Playgroud)
This shippet only presents functions used in performance tests - it not perform tests itself!
Run Code Online (Sandbox Code Playgroud)

以下是 chrome 的示例结果

在此处输入图片说明