JavaScript分割字符串
str = '123.2345.34',
期望输出:123.2345和34Str = 123,23.34.23
期望输出:123,23.34和23
目标:编写JS函数以O(n)的时间复杂度根据最后一个点拆分字符串。 字符串中可能有n个逗号或点。
str = '123.2345.34',
期望输出:123.2345和34
Str = 123,23.34.23
期望输出:123,23.34和23
目标:编写JS函数以O(n)的时间复杂度根据最后一个点拆分字符串。 字符串中可能有n个逗号或点。
为了像描述的那样仅匹配最后一个字符并 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 test = 'filename.....png';
var lastStr = test.lastIndexOf(".");
var str = test.substring(lastStr + 1);
console.log(str);
试试这个:
var str = '123.2345.34',
arr = str.split('.'),
output = arr.pop();
str = arr.join('.');
str
类型,输出为 34。 - Tushar我通常使用这段代码,它对我而言运行良好。
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);
试试这个解决方案。简单的分割逻辑
<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>
我的版本:
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);
});