JavaScript拆分,最后一个DOT"拆分字符串。"

时间:2015-04-23 13:48:23

标签: javascript jquery string

JavaScript拆分,

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

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

  3. 目标:JS功能在O(n)中基于点(从最后)拆分字符串。 字符串中可能有n个(逗号或点)。

13 个答案:

答案 0 :(得分:8)

我会尝试像贝洛一样的东西

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'))

答案 1 :(得分:7)

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 separatos
console.log(firstVal +" and "+lastVal);  //Printing result

答案 2 :(得分:5)

我想出了这个:



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

<div id="output"></div>
&#13;
&#13;
&#13;

答案 3 :(得分:4)

为了使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);

答案 4 :(得分:1)

试试这个:

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

答案 5 :(得分:1)

var test = 'filename.....png';
var lastStr = test.lastIndexOf(".");
var str = test.substring(lastStr + 1);
console.log(str);

答案 6 :(得分:1)

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

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);
  

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

答案 7 :(得分:0)

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

 <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>

答案 8 :(得分:0)

我自己的版本:

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/

答案 9 :(得分:0)

Str = '123,23.34.23';

var a = Str.substring(0, Str.lastIndexOf(".")) //123,23.34 
var b = Str.substring(Str.lastIndexOf(".")) //23

答案 10 :(得分:0)

您可以先使用lodash _.toPath,然后将数组中的所有元素转换为由分隔符分隔的字符串。

let str = '123,23.34.23';
// _.toPath(str)
// => ["123,23", "34", "23"]

let str1 = _.toPath(str);
let str2 = str1.pop();

let [major, minor] = [_.join(str1, '.'), str2];
console.log([major, minor]);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.js"></script>

答案 11 :(得分:0)

下面提到了最简单的方法,您将得到 pdf 作为输出:

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

  

输出:pdf

答案 12 :(得分:0)

company