[英]how to cut a string in javascript
我收到这样的字符串:
"45,21,555,64,94,796,488,\n " the \n means new line
有没有一种方法可以基于“,”剪切字符串并仅获取“数字”。
我可以用C做到,但是如何在JavaScript中搜索字符。
谢谢你的提示
var parts = "45,21,555,64,94,796,488,\n ".split(',').filter(function(val) {
var num = parseInt(val, 10);
return !isNaN(num) && toString.call(num) === '[object Number]';
});
// parts: ["45", "21", "555", "64", "94", "796", "488"]
这是将您的String放入一个基于定界符( ','
)的数组中,然后通过过滤器函数将其运行,以删除所有未评估为有效Number的内容。
请参阅String.prototype.split
和Array.prototype.filter
。
如果您确实想将这些值转换为Numbers,则可以链接一个map
调用:
var parts = "45,21,555,64,94,796,488,\n ".split(',')
.filter(function(val) {
var num = parseInt(val, 10);
return !isNaN(num) && toString.call(num) === '[object Number]';
})
.map(function(val) {
return parseInt(val, 10);
});
// parts: [45, 21, 555, 64, 94, 796, 488]
是的,像这样:
var myString = "45,21,555,64,94,796,488,\n ";
var splitStrings = string.split(",");
console.log(splitStrings); //Should log an array to the console, containing only your strings e.g. [45,21,555,64,94,796,488,\n]
这将返回一个字符串数组,并按传入的字符进行拆分。您可以在此处阅读有关此方法的更多信息: http : //www.w3schools.com/jsref/jsref_split.asp
之后,您可以解析数组以删除不需要的任何内容(例如换行符),或使用过滤器方法按内联方式进行操作,如另一个答案中所述
您可以使用string.split(splitChar)
进行拆分。 然后,您可以使用.map
或.filter
将项目转换为数字。
var str = "45,21,555,64,94,796,488,\\n "; var arr = str.split(","); document.write("Array: <pre>"+JSON.stringify(arr)+"</pre>"); var nums = arr.map(function(item){ return parseInt(item); }); document.write("Numbers: <pre>"+JSON.stringify(nums)+"</pre>");
如果只需要数字作为数组,则可以这样做。
var str = "45,21,555,64,94,796,488,\n ";
var arr = str.split(","); //Make the string into an array
var len = arr.length;
for(var i=0;i<len;i++)
{
try
{
arr[i] = parseInt(arr[i]); // convert the numbers to ints
}
catch(e)
{
arr[i] = null;
}
}
由于字符串只是数组,因此您可以使用这种方式(我认为更全面):
function noCommas(a)
{
var b = '';
for (var i = 0; i < a.length; i++)
{
if (a[i] != ',') //&& a[i]!= String.fromCharCode(10)) If you want no new lines too
{
b += a[i];
} else
{
//break; -> In case you only want the first value
}
}
return parseInt(b); //To return the value as an integer
}
noCommas('1234,6789'); // returns 12346789
我误解了这个问题,所以这是我的固定代码:
function noCommas(a)
{
var b = [];
var tempNum = '';
for (var i = 0; i < a.length; i++)
{
if (a[i] != ',' && i != a.length - 1)
{
tempNum += a[i];
} else
{
b.push(parseInt(tempNum))
tempNum = '';
}
}
return b;
}
现在,如果您执行noCommas('123,345,324234')[2]
,它将返回324234
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.