簡體   English   中英

如何通過Node Js分割字符串?

[英]How to split a string by Node Js?

我的數組:

var str=['data1,data2 '];

我用過:

var arr = str.split(",");

但是顯示了一個錯誤。 TypeError:對象data1,data2沒有方法'split'。 我怎么解決這個問題。

我的輸出將是:

arr= data1,data2
// or
arr[0]=data1;
arr[1]=data2;

我怎么解決這個問題 ?

你應該做這個 :

var arr = str.toString().split(",");

TypeError:對象data1,data2沒有方法'split' ”指示該變量不被視為字符串。 因此,您必須進行強制轉換。


更新2015年10月10日我注意到有人認為以上答案是“ 骯臟的解決方法 ”,令人驚訝的是,此評論遭到了批評。 實際上,這是完全相反的-使用str[0].split(",")作為3(!),其他建議是真正的“骯臟解決方法”。 為什么? 考慮在這些情況下會發生什么:

var str = [];
var str = ['data1,data2','data3,data4'];
var str = [someVariable]; 

一旦str擁有一個空數組, str[0].split(",")就會徹底失敗,由於某種原因而不是擁有String.prototype或者如果str擁有多個字符串,則結果將不令人滿意。 使用str[0].split(",")盲目地相信str總是將精確地容納1個字符串,並且絕不會其他任何東西是不好的做法。 數字,數組,對象,布爾值,日期甚至函數都支持toString() str[0].split()具有引發錯誤並停止作用域進一步執行的巨大潛力,從而使整個應用程序崩潰。

如果您確實要使用str[0].split()那么至少要進行一些最小的類型檢查:

var arr;
if (typeof str[0] == 'string') {
    arr = str[0].split(',')
} else {
    arr = [];
}

如果您的起點是一個內部帶有stringarray 這應該工作:

var arr = str[0].split(",");

否則,您應該以字符串作為起點,代碼才能按預期工作:

var str = 'data1,data2';

如果數組中有更多元素,則需要使用for循環對其進行迭代。

編輯以添加其他情況:

如果該數組中有多個字符串,則應格外小心,並執行以下操作:

 var str = ['data1,data2 ', ' data3, data4 ']; // notice these strings have many spaces in different places var longString = str.join(','); var array = longString.split(',').map(s => s.trim()).filter(Boolean); // removing spaces from start and end of strings, and eventually removing empty positions console.log(array); 

如您所說, str是一個數組(帶有一個元素)。 如果要拆分數組中包含的字符串,則必須首先訪問該數組:

var arr = str[0].split(",");

假設我們有兩個日期:

date1:​​1989年1月17日

date2:20/02/2000

如果我們想比較它們,只需將字符串分開並像這樣比較

var date1= date1.toString().split("/");

var date2= date2.toString().split("/");

var a = parseInt(date1[2] + date1[1] + date1[0]);

var b = parseInt(date2[2] + date2[1] + date2[0]);

如果(a <b){

alert(“ date2比date1大”)}

}否則if(a> b){

警報(“ date1大於date2”)

}其他{

alert(“ date 1和date2等於”);

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM