我可能可以使用 preg_replace 在 PHP 中管理此操作,但我需要在 JavaScript 中执行此操作,而且我很挣扎!
我将从数据库中获取起始字符串,例如:-
Black Pudding with Eggs
或
Sausage and Crispy Bacon
等等 - 总是由“and”或“with”分割两个“事物”。 “事物”可以是 1 个、2 个或更多个单词。
我需要的是 3 个新变量 - 两个变量一起,每个“事物”单独存在(“main”附加到第一个变量,“side”附加到第二个变量)。全部应为小写,所有空格更改为下划线,并且没有前导空格或训练空格。所以上面的内容会给我:-
var1 : 'black_pudding_with_eggs'
var2 : 'black_pudding_main'
var3 : 'eggs_side'
从第二个开始:-
var1 : 'sausage_and_crispy_bacon'
var2 : 'sausage_main'
var3 : 'crispy_bacon_side'
它所在的网站已经使用了 jQuery,所以这是一个选项,如果这样更容易的话......
非常感谢任何帮助!
最佳答案
jQuery 不是必需的。您可以将字符串拆分为数组并使用 .replace()
进行转换。
function getOrder(input) {
var item = input.replace(/ /g, '_').toLowerCase();
// there's probably a better way of splitting this, but I can't think of it.
var dish = (input.indexOf(' and ') > -1) ? input.split(' and ') : input.split(' with ');
var main = dish[0].replace(/ /g, '_').toLowerCase() + "_main";
var side = dish[1].replace(/ /g, '_').toLowerCase() + "_side";
// returns a JS object so to have access to all properties in one function
return {
item: item,
main: main,
side: side
};
}
然后,你可以得到这样的零件:
getOrder('黑布丁加鸡蛋').item
for black_pudding_with_eggs
getOrder('黑布丁加鸡蛋').main
for black_pudding_main
getOrder('黑布丁加鸡蛋').side
for eggs_side
示例如下:https://jsfiddle.net/TheQueue841/tujdb98y/
请注意,此方法需要输入“and”或“with”,否则会出现问题。如有必要,可以轻松修改以适应这些要求。
关于Javascript 字符串操作 - 小写、替换、 trim 、分割,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40005061/