【问题标题】:JavaScript Split, Split string by last DOT "."JavaScript 拆分,按最后一个点“。”拆分字符串
【发布时间】:2015-04-23 13:48:23
【问题描述】:

JavaScript 拆分,

  1. str = '123.2345.34',
    预期输出 123.2345 和 34

  2. Str = 123,23.34.23
    预期输出 123,23.34 和 23

目标:JS 函数在 O(n) 中根据点(从最后一个)拆分字符串。 字符串中可能有 n 个 ,.(逗号或点)。

【问题讨论】:

  • 你在什么基础上分裂......任何逻辑?
  • dot(.)(最后一次出现)

标签: javascript jquery string


【解决方案1】:

为了split 一个只匹配最后一个字符的字符串,你需要使用正则表达式“lookahead”。

这个简单的例子适用于你的情况:

var array = '123.2345.34'.split(/\.(?=[^\.]+$)/);
console.log(array);

解构赋值示例 (Ecmascript 2015)

const input = 'jquery.somePlugin.v1.6.3.js';
const [pluginName, fileExtension] = input.split(/\.(?=[^\.]+$)/);
console.log(pluginName, fileExtension);

但是,将slicesubstringlastIndexOf 一起使用也可以,虽然不那么优雅,但速度要快得多:

var input = 'jquery.somePlugin.v1.6.3.js';
var period = input.lastIndexOf('.');
var pluginName = input.substring(0, period);
var fileExtension = input.substring(period + 1);
console.log(pluginName, fileExtension);

【讨论】:

  • 救命!我的旧解决方案仅使用拆分,但这不会考虑各种“。”在文件名中。
【解决方案2】:

var str = "filename.to.split.pdf"
var arr = str.split(".");      // Split the string using dot as separator
var lastVal = arr.pop();       // Get last element
var firstVal = arr.join(".");  // Re-join the remaining substrings, using dot as separator

console.log(firstVal + " and " + lastVal);  //Printing result

【讨论】:

    【解决方案3】:

    我会试试下面的方法

    var splitByLastDot = function(text) {
        var index = text.lastIndexOf('.');
        return [text.slice(0, index), text.slice(index + 1)]
    }
    
    console.log(splitByLastDot('123.2345.34'))
    console.log(splitByLastDot('123,23.34.23'))
    

    【讨论】:

      【解决方案4】:

      我想出了这个:

      var str = '123,23.34.23';
      var result = str.replace(/\.([^.]+)$/, ':$1').split(':');
      document.getElementById('output').innerHTML = JSON.stringify(result);
      <div id="output"></div>

      【讨论】:

        【解决方案5】:
        let returnFileIndex = str =>
            str.split('.').pop();
        

        【讨论】:

        • 您能否为您的答案添加解释? :)
        【解决方案6】:

        试试这个:

        var str = '123.2345.34',
            arr = str.split('.'),
            output = arr.pop();
        str = arr.join('.');
        

        【讨论】:

        • 这将给出“123.2345”
        • str 中的 123.2345 和 output 中的 34
        【解决方案7】:
        var test = 'filename.....png';
        var lastStr = test.lastIndexOf(".");
        var str = test.substring(lastStr + 1);
        console.log(str);
        

        【讨论】:

          【解决方案8】:

          我通常使用此代码,这对我来说很好。

          jquery:

          var afterDot = value.substr(value.lastIndexOf('_') + 1);
          console.log(afterDot);
          

          Javascript:

          var myString = 'asd/f/df/xc/asd/test.jpg'
          var parts    = myString.split('/');
          var answer   = parts[parts.length - 1];
          console.log(answer);
          

          注意:将引用的字符串替换为您自己的需要

          【讨论】:

            【解决方案9】:

            我自己的版本:

            var mySplit;
            var str1;
            var str2;
            $(function(){
              mySplit = function(myString){
                var lastPoint = myString.lastIndexOf(".");
                str1 = myString.substring(0, lastPoint);
                str2 = myString.substring(lastPoint + 1);
              }
              mySplit('123,23.34.23');
              console.log(str1);
              console.log(str2);
            });
            

            工作小提琴:https://jsfiddle.net/robertrozas/no01uya0/

            【讨论】:

              【解决方案10】:
              Str = '123,23.34.23';
              
              var a = Str.substring(0, Str.lastIndexOf(".")) //123,23.34 
              var b = Str.substring(Str.lastIndexOf(".")) //23
              

              【讨论】:

                【解决方案11】:

                试试这个解决方案。 简单的溢出逻辑

                 <script type="text/javascript">
                
                 var str = "123,23.34.23";
                 var str_array = str.split(".");
                 for (var i=0;i<str_array.length;i++)
                 {
                     if (i == (str_array.length-1))
                     {
                         alert(str_array[i]);
                     }
                 }
                 </script>
                

                【讨论】:

                  【解决方案12】:

                  下面提到最简单的方法,你会得到pdf作为输出:

                  var str = "http://somedomain.com/dir/sd/test.pdf"; var ext = str.split('.')[str.split('.').length-1];

                  输出:pdf

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2017-04-23
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多