Javascript 字符串操作 - 小写、替换、 trim 、分割

标签 javascript jquery regex string replace

我可能可以使用 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/

相关文章:

javascript - 根据预订的时段将可用时隙数组分成 block

javascript - 使用 easeljs/createjs 隐藏光标

javascript - 通过更改输入值禁用按钮

asp.net 电子邮件验证正则表达式

javascript - 使用 AJAX 将真实性 token 发送到 Rails 的正确方法

javascript - 使用 Highcharts 构建仪表板

jquery - $.append() 和 $.append(document.createTextNode()) 之间的区别

jquery - 如何从 jQuery 中的另一个函数关闭 'toggle'

java - 正则表达式一组或多组 - 正则表达式匹配带或不带端口号的 url

javascript - 正则表达式匹配星号之间的字符串