在javascript中操纵替换字符串

在javascript中操纵替换字符串,javascript,Javascript,及 在主字符串中,值789来自变量a, 值456来自变量b,值LLX来自变量c。 变量a和b总是整数,而变量c总是三个值中的一个,即LLI、LLA、LLX 在值789之前,可以有任意数量的单词被hypen-分割。像漫游LCD Synergy SSI等。。。 但在主字符串中变量c i.e LLX的值之后,只能有一个词来表示保修 现在我的问题是,我必须用新输入的值(比如987-654-LLA)替换a、b和c的这三个值,即789-456-LLX,然后我想要的最终字符串是 旧字符串:mainString

在主字符串中,值789来自变量a, 值456来自变量b,值LLX来自变量c。 变量a和b总是整数,而变量c总是三个值中的一个,即LLI、LLA、LLX

在值789之前,可以有任意数量的单词被hypen-分割。像漫游LCD Synergy SSI等。。。 但在主字符串中变量c i.e LLX的值之后,只能有一个词来表示保修

现在我的问题是,我必须用新输入的值(比如987-654-LLA)替换a、b和c的这三个值,即789-456-LLX,然后我想要的最终字符串是

旧字符串:mainString=ROAM-LCD-Synergy-789-456-LLX保修

所需字符串:mainString=ROAM-LCD-Synergy-987-654-LLA

请提出一些解决办法


谢谢

以下代码应根据a、b和c的值进行更新

var mainString ="ROAM-LCD-Synergy-789-456-LLX WARRANTY"

只需在赋值之前更改值?将其放在声明变量之前

var a = 123; 
var b = 456; 
var c = "ABC";
var mainString ="ROAM-LCD-Synergy-789-456-LLX WARRANTY";

var updatedString = mainString .replace(/\d{3}-\d{3}-[A-Z]{3}\s([^\s]*)$/,a+"-"+b+"-"+c+" $1");
console.log(updatedString);

像这样的方法应该会奏效:

document.getElementById("txtOrderNumberRelease1").value = '987';
document.getElementById("txtOrderNumberRelease2").value = '654';
document.getElementById("txtOrderNumberRelease3").value = 'LLA';

这里有一个使用string.split的选项

mainString.replace(/[\d]{3}\-[\d]{3}\-[\w]{3}\s([\w]+)$/, a + "-" + b + "-" + c + " $1");

宿醉时不要参加计算机科学讲座?这个答案如何创建字符串mainString=ROAM-LCD-Synergy-987-654-LLA担保?以及LLX实际上是LLA时?LLX是动态的,不知道。嗯。。。。那就用你想要的来代替吧?没关系。。。从正则表达式很容易找到的东西开始,然后用新的替换它。。。如果是变量,则将保存前一个值的变量放在替换点。不确定为什么对正确答案投了反对票?如果原始字符串为“mainString”,则将789替换为a,456替换为b,LLX替换为CTOP不知道前面的值是什么,这就是问题所在。好的。。。再说一遍,这也没关系。如果mainString以ROAM-LCD-Synergy-789-456-LLX保修开始,那么789、456和LLX段将被替换为正确的部分-变量a、b和c怎么没有人得到这个?除了mystringROAM-123-456-LLX的情况外,它工作正常无成本,即字符串中的最后一个字有空间即无成本。。但是仍然在尝试…谢谢…我以为最后一句话只有一个词。您只需将[^\s]更改为[\s\w],它将是/\d{3}-\d{3}-[A-Z]{3}\s[\w\s]*哇,现在怎么样?如果这样不行,你能告诉我有什么问题吗?
document.getElementById("txtOrderNumberRelease1").value = '987';
document.getElementById("txtOrderNumberRelease2").value = '654';
document.getElementById("txtOrderNumberRelease3").value = 'LLA';
mainString.replace(/[\d]{3}\-[\d]{3}\-[\w]{3}\s([\w]+)$/, a + "-" + b + "-" + c + " $1");
function replaceLastThreeDashedFields(original,a,b,c) {
    var spaceSplit = original.split(' ');
    var dashSplit = spaceSplit[0].split('-');
    dashSplit[dashSplit.length - 3] = a;
    dashSplit[dashSplit.length - 2] = b;
    dashSplit[dashSplit.length - 1] = c;
    var newDashed = dashSplit.join('-');
    spaceSplit[0] = newDashed;
    var newSpaced = spaceSplit.join(' ');
    return newSpaced;
}