繁体   English   中英

如何在javascript中剪切字符串

[英]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.splitArray.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM