JavaScript字符串拆分()
我们有多个记录,每个记录都有一个资产列表。资产列表由多个客户端名称和站点(名称站点、名称站点_2、名称2-站点_3、名称3-站点_4)组成 我试图将资产列表拆分为两个列表,一个是所有名称,另一个是所有站点(我只想显示每个列表中的唯一内容)。我在逗号处拆分,然后在连字符处再次拆分 我在下面创建的东西可以工作,但最近我遇到了一些客户端站点组合,它们有一个额外的连字符,这破坏了我的解决方案(我最初用逗号拆分字符串,然后用连字符拆分子字符串)。要添加另一个褶皱,额外的连字符并不总是在同一个位置,这取决于类别,它可能是需要忽略的第一个连字符(在客户端名称中)或第二个连字符(在站点中),幸运的是,这在类别上是一致的(如果类别=“动物”) 对于动物类,如果有两个连字符,我需要忽略第一个 对于水果类,如果有两个连字符,我需要忽略第二个 有什么想法吗 资产清单示例: 类别==“动物” 如果有两个连字符,我需要在第二个拆分。 assetList=“鱼马克、猫吉姆、蓝狗亨利、红鸟比尔、绿蛇拉里” 类别==“水果” 如果有两个连字符,我首先需要拆分。 assetList=“莱姆·亨利、柠檬·苏珊、香蕉鲍勃·纳尔逊、苹果里克·琼斯、菠萝山姆·史密斯” 下面是我的代码:JavaScript字符串拆分(),javascript,string,split,Javascript,String,Split,我们有多个记录,每个记录都有一个资产列表。资产列表由多个客户端名称和站点(名称站点、名称站点_2、名称2-站点_3、名称3-站点_4)组成 我试图将资产列表拆分为两个列表,一个是所有名称,另一个是所有站点(我只想显示每个列表中的唯一内容)。我在逗号处拆分,然后在连字符处再次拆分 我在下面创建的东西可以工作,但最近我遇到了一些客户端站点组合,它们有一个额外的连字符,这破坏了我的解决方案(我最初用逗号拆分字符串,然后用连字符拆分子字符串)。要添加另一个褶皱,额外的连字符并不总是在同一个位置,这取决于
var assetList = "fish-mark, cat-jim, blue-dog-henry, red-bird-bill, green-snake-larry";
var count = (assetList.match(/-/g) || []).length;//counts the hyphens (client-siteId combo)
var splitObj = {};
var comboObj = {};
var clientObj = {};
var siteObj = {};
var mainSplitObj = {};
var allClient = '';
var allSite = '';
mainSplitObj = assetList.split(', ');
for (var i = 0; i < count; i++) {
splitObj["split"+i] = mainSplitObj[0+i]; //puts the client-siteID into a substring
comboObj["combo"+i] = splitObj["split"+i].split('-'); //splits the client-siteID at the dash
clientObj["client"+i] = comboObj["combo"+i][0]; //puts the client name in a substring
siteObj["site"+i] = comboObj["combo"+i][1]; //puts the siteid in a substring
allClient += clientObj["client"+i] +";"+ ' '; //cumulatively adds client substrings to allClient variable
allSite += siteObj["site"+i] +";" + ' '; //cumulatively adds site substrings to allSite variable
}
tempC = allClient.split(",")
uniqueClient = []
for (var i = 0; i < tempC.length; i++) {
isIn = 0
for (var j = 0; j < uniqueClient.length; j++) {
if (tempC[i] == uniqueClient[j]) {
isIn = 1
}
}
if (isIn == 0) {
uniqueClient.push(tempC[i])
}
}
tempS = allSite.split(",")
uniqueSite = []
for (var i = 0; i < tempS.length; i++) {
isIn = 0
for (var j = 0; j < uniqueSite.length; j++) {
if (tempS[i] == uniqueSite[j]) {
isIn = 1
}
}
if (isIn == 0) {
uniqueSite.push(tempS[i])
}
}
var assetList=“鱼标、猫吉姆、蓝狗亨利、红鸟比尔、绿蛇拉里”;
变量计数=(assetList.match(/-/g)| |[])长度//计数连字符(客户端站点ID组合)
var splitObj={};
var combobj={};
var clientObj={};
var siteObj={};
var mainSplitObj={};
var-allClient='';
var-allSite='';
mainSplitObj=assetList.split(',');
对于(变量i=0;i
下面是一种使用indexOf和lastIndexOf来执行at的方法。它在最后一个连字符而不是第二个连字符上拆分,在您的情况下,第二个连字符会给出相同的结果
// Split on first hyphen
var list = ["lime-henry", "lemon-susan", "banana-bob-nelson", "apple-rick-jones", "pineapple-sam-smith"];
for (var i = 0; i < list.length; i++) {
var delimiterIndex = list[i].indexOf("-");
var item = list[i];
var left = item.substring(0, delimiterIndex);
var right = item.substring(delimiterIndex + 1, item.length);
console.log(left, right);
}
/* outputs
* lime henry
* lemon susan
* banana bob-nelson
* apple rick-jones
* pineapple sam-smith
*/
// Split on last hyphen
var list = ["fish-mark", "cat-jim", "blue-dog-henry", "red-bird-bill", "green-snake-larry"];
for (var i = 0; i < list.length; i++) {
var delimiterIndex = list[i].lastIndexOf("-");
var item = list[i];
var left = item.substring(0, delimiterIndex);
var right = item.substring(delimiterIndex + 1, item.length);
console.log(left, right);
}
/* outputs
* fish mark
* cat jim
* blue-dog henry
* red-bird bill
* green-snake larry
*/
//在第一个连字符上拆分
var列表=[“莱姆亨利”、“柠檬苏珊”、“香蕉鲍勃·纳尔逊”、“苹果里克·琼斯”、“菠萝山姆·史密斯”];
对于(变量i=0;i
不要使用拆分-根据类别使用indexOf
和lastIndexOf
(与子字符串结合使用)