替换字符串中最后出现的字符

时间:2011-03-31 08:51:21

标签: javascript jquery

在jQuery中有一种简单的方法可以替换给定字符串中最后一次出现的'_'(下划线)吗?

11 个答案:

答案 0 :(得分:112)

你不需要jQuery,只需要一个正则表达式。

这将删除最后一个下划线:

var str = 'a_b_c';
str = str.replace(/_([^_]*)$/,'$1'); //a_bc

这会将其替换为变量replacement

的内容
var str = 'a_b_c', replacement = '!';
str = str.replace(/_([^_]*)$/,replacement+'$1'); //a_b!c

答案 1 :(得分:63)

不需要jQuery也不需要正则表达式

替换字符串中的最后一个字符

str = str.substring(0,str.length-2)+otherchar

替换字符串中的最后一个下划线

var pos = str.lastIndexOf('_');
str = str.substring(0,pos) + otherchar + str.substring(pos+1)

或使用其他答案中的一个正则表达式

var str1 = "Replace the full stop with a questionmark."
var str2 = "Replace last _ with another char other than the underscore _ near the end"

// Replace last char in a string

console.log(
  str1.substring(0,str1.length-2)+"?"
)  
// alternative syntax
console.log(
  str1.slice(0,-1)+"?"
)

// Replace last underscore in a string 

var pos = str2.lastIndexOf('_'), otherchar = "|";
console.log(
  str2.substring(0,pos) + otherchar + str2.substring(pos+1)
)
// alternative syntax

console.log(
  str2.slice(0,pos) + otherchar + str2.slice(pos+1)
)

答案 2 :(得分:6)

这个怎么样?

function replaceLast(x, y, z){
  var a = x.split("");
  a[x.lastIndexOf(y)] = z;
  return a.join("");
}

replaceLast("Hello world!", "l", "x"); // Hello worxd!

答案 3 :(得分:2)

反转字符串,替换字符串,反转字符串。

以下是javascript中反转字符串的帖子:How do you reverse a string in place in JavaScript?

答案 4 :(得分:2)

保持简单

var someString = "a_b_c";
var newCharacter = "+";

var newString = someString.substring(0, someString.lastIndexOf('_')) + newCharacter + someString.substring(someString.lastIndexOf('_')+1);

答案 5 :(得分:1)

这与mplungjan的答案非常相似,但可以更容易一点(特别是如果您需要在之后进行其他字符串操作并希望将其保留为数组) 无论如何,我只是想我会把它放在那里以防万一有人喜欢它。



var str = 'a_b_c';
str = str.split(''); //['a','_','b','_','c']
str.splice(str.lastIndexOf('_'),1,'-'); //['a','_','b','-','c']
str = str.join(''); //'a_b-c'




' _'可以与要替换的字符交换出来

' - '可以用要替换它的字符或字符串替换为

答案 6 :(得分:1)

另一种超清晰的方法如下:

let modifiedString = originalString
   .split('').reverse().join('')
   .replace('_', '')
   .split('').reverse().join('')

答案 7 :(得分:0)

您可以使用此代码



var str="test_String_ABC";
var strReplacedWith=" and ";
var currentIndex = str.lastIndexOf("_");
str = str.substring(0, currentIndex) + strReplacedWith + str.substring(currentIndex + 1, str.length);

alert(str);




答案 8 :(得分:0)

    // Define variables
    let haystack = 'I do not want to replace this, but this'
    let needle = 'this'
    let replacement = 'hey it works :)'
    
    // Reverse it
    haystack = Array.from(haystack).reverse().join('')
    needle = Array.from(needle).reverse().join('')
    replacement = Array.from(replacement).reverse().join('')
    
    // Make the replacement
    haystack = haystack.replace(needle, replacement)
    
    // Reverse it back
    let results = Array.from(haystack).reverse().join('')
    console.log(results)
    // 'I do not want to replace this, but hey it works :)'

答案 9 :(得分:0)

这是一种递归方式,可删除多次出现的“ endchar”:

static void Main()
{
    var colors = System.Linq.Enumerable.ToArray(getColors(1));
    // ...
}

答案 10 :(得分:0)

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int a = 027;
    printf("%d",a); //23

    return 0;
}

故障:

var someString = "(/n{})+++(/n{})---(/n{})$$$";
var toRemove = "(/n{})"; // should find & remove last occurrence 

function removeLast(s, r){
  s = s.split(r)
  return s.slice(0,-1).join(r) + s.pop()
}

console.log(
  removeLast(someString, toRemove)
)
s = s.split(toRemove)         // ["", "+++", "---", "$$$"]
s.slice(0,-1)                 //  ["", "+++", "---"]   
s.slice(0,-1).join(toRemove)  // "})()+++})()---"