【问题标题】:How split the months from a string?如何从字符串中拆分月份?
【发布时间】:2019-02-23 11:57:33
【问题描述】:

我只需要从字符串中拆分月份名称。

例如:

let str = "januaryfebruaryapriltuesdayfriday";

我想像这样拆分

let arr = ["january","february"," april "]

我是JS新手,我试过split方法,但我没有得到结果,有什么办法吗?

【问题讨论】:

  • 您可以使用大写字母。它已经在这里了。 stackoverflow.com/questions/10064683/…
  • 也可以小写
  • 因为那里也有日期名称(也许还有其他东西?),最简单的解决方案是只拥有一个包含所有 12 个月名称的数组并将其映射到字符串以了解哪些月份发生在字符串中。但更好的解决方案是首先通过调整给您该字符串的任何内容来防止出现此问题。
  • 你有什么例子吗?

标签: javascript jquery angularjs node.js


【解决方案1】:

你可以这样做

let str = "januaryfebruaryapriltuesdayfriday";
let months=['january','february', 'march', 'april','may','june','july','august','september','october','november','december'];
let arr=[];
months.map((data,index)=>{
if(str.indexOf(data)>=0){
  arr.push(str.substr(str.indexOf(data),data.length))
}}
)
console.log(arr);

【讨论】:

  • 他的字符串只包含小写字母
  • 我认为它会返回所有值 rit ?我只需要月份名称
  • 当我发布答案@PaulFitzgerald时是大写的
  • 请立即查看@parithiinfo
  • @Wysiati 很公平,我没看到 :-)
【解决方案2】:

你可以这样做:

    let str = "januaryfebruaryapriltuesdayfriday";
    var arr = [];
    if( str.includes("january") ) {
    	arr.push("january");
    }
    if( str.includes("february") ) {
    	arr.push("february");
    }
    if( str.includes("april") ) {
    	arr.push("april");
    }
    console.log(arr);

在所有月份继续这样做。

这是如何工作的?

这将检查您的字符串是否包含月份的名称(一月、二月、三月等......) - 如果在字符串中找到特定月份,它将被推送(附加/添加)到名为arr的数组。

【讨论】:

    【解决方案3】:

    您可以使用正则表达式来搜索月份名称并获取它的数组。

    var string = "januaryfebruaryapriltuesdayfriday",
        array = string.match(/january|february|march|april|may|june|july|august|september|october|november|december/gi);
        
    console.log(array);

    【讨论】:

    • 最简单没有任何循环!很棒的答案@nina scholz
    • 我同意,@nina scholz 在这些 JS 问题上是业内最好的
    【解决方案4】:

    您可以执行以下操作。

    为了解释,首先创建一个包含所有月份的数组。

    然后,您希望通过仅包含字符串中的月份来将filter 放入一个新数组中。

    let months = [
      'January',
      'February',
      'March',
      'April',
      'May',
      'June',
      'July',
      'August',
      'September',
      'October',
      'November',
      'December'
    ];
    
    // change all months to lowercase
    months = months.map(m => {
      return m.toLowerCase();
    });
    
    
    let str = "januaryfebruaryapriltuesdayfriday";
    let arr = months.filter(m => str.includes(m));
    
    console.log(arr);

    【讨论】:

    • 我有同样的想法,只是用另一种方式实现了!不错的尝试! :)
    【解决方案5】:

    试试下面的代码:

    var monthsArray = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']
    var input = "januaryfeBruaryapriltuesdayfriday";
    var inputLowerCase = input.toLowerCase();
    var output = [];
    monthsArray.forEach(function (month) {
        if (input.includes(month.toLowerCase())) {
            output.push(month);
        }
    });
    console.log("Output:", output);

    // 输出:(2) ["January", "April"]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-28
      • 2023-04-02
      • 2020-12-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-18
      • 2020-02-12
      • 1970-01-01
      相关资源
      最近更新 更多