JavaScript拆分,
str =' 123.2345.34' ,
预期产出123.2345和34
Str = 123,23.34.23
预期产出123,23.34和23
目标:JS功能在O(n)中基于点(从最后)拆分字符串。 字符串中可能有n个(逗号或点)。
答案 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;
答案 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);
然而,将slice
或substring
与lastIndexOf
一起使用也会奏效,虽然不那么优雅但速度要快得多:
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);
});
答案 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