目标:JS 函数在 O(n) 中根据点(从最后一个开始)分割字符串。 字符串中可能有 n 个 ,.(逗号或点)。
str = '123.2345.34'
预期输出 123.2345 和 34
Str = '123,23.34.23'
预期产量 123,23.34 和 23
为了
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);
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
我会尝试像下面这样的事情
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'))
我想出了这个:
var str = '123,23.34.23';
var result = str.replace(/\.([^.]+)$/, ':$1').split(':');
document.getElementById('output').innerHTML = JSON.stringify(result);
<div id="output"></div>
let returnFileIndex = str =>
str.split('.').pop();
试试这个:
var str = '123.2345.34',
arr = str.split('.'),
output = arr.pop();
str = arr.join('.');
var test = 'filename.....png';
var lastStr = test.lastIndexOf(".");
var str = test.substring(lastStr + 1);
console.log(str);
我通常使用此代码,这对我来说效果很好。
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);
注意:将带引号的字符串替换为您自己的需要
我自己的版本:
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);
});
Str = '123,23.34.23';
var a = Str.substring(0, Str.lastIndexOf(".")) //123,23.34
var b = Str.substring(Str.lastIndexOf(".")) //23
尝试这个解决方案。 简单的溢出逻辑
<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>
非常非常老的问题,但我相信它总是值得另一个答案;-)
const s = '123.2345.123456.34';
function splitString(t) {
let a = t.split(/\./);
return [a.slice(0, -1).join('.'), a.pop()];
}
const [first, last] = splitString(s);
console.log(`first: ${first}, last: ${last}`);
通过使用新的
flat()
方法以及 join()
和 pop()
,您可以执行以下操作:
示例1
// expected output 123.2345 and 34
var str = '123.2345.34';
var result = str.split('.');
var last = result.pop();
var rest = result.flat().join('.');
console.log(rest, last);
示例2
// expected output 123,23.34 and 23
var str = '123,23.34.23';
var result = str.split('.');
var last = result.pop();
var rest = result.flat().join('.');
console.log(rest, last);
最简单的方法如下所述,您将得到pdf作为输出:
var str = "http://somedomain.com/dir/sd/test.pdf";
var ext = str.split('.')[str.split('.').length-1];
输出:pdf