Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript字符串拆分()_Javascript_String_Split - Fatal编程技术网

JavaScript字符串拆分()

JavaScript字符串拆分(),javascript,string,split,Javascript,String,Split,我们有多个记录,每个记录都有一个资产列表。资产列表由多个客户端名称和站点(名称站点、名称站点_2、名称2-站点_3、名称3-站点_4)组成 我试图将资产列表拆分为两个列表,一个是所有名称,另一个是所有站点(我只想显示每个列表中的唯一内容)。我在逗号处拆分,然后在连字符处再次拆分 我在下面创建的东西可以工作,但最近我遇到了一些客户端站点组合,它们有一个额外的连字符,这破坏了我的解决方案(我最初用逗号拆分字符串,然后用连字符拆分子字符串)。要添加另一个褶皱,额外的连字符并不总是在同一个位置,这取决于

我们有多个记录,每个记录都有一个资产列表。资产列表由多个客户端名称和站点(名称站点、名称站点_2、名称2-站点_3、名称3-站点_4)组成

我试图将资产列表拆分为两个列表,一个是所有名称,另一个是所有站点(我只想显示每个列表中的唯一内容)。我在逗号处拆分,然后在连字符处再次拆分

我在下面创建的东西可以工作,但最近我遇到了一些客户端站点组合,它们有一个额外的连字符,这破坏了我的解决方案(我最初用逗号拆分字符串,然后用连字符拆分子字符串)。要添加另一个褶皱,额外的连字符并不总是在同一个位置,这取决于类别,它可能是需要忽略的第一个连字符(在客户端名称中)或第二个连字符(在站点中),幸运的是,这在类别上是一致的(如果类别=“动物”)

对于动物类,如果有两个连字符,我需要忽略第一个

对于水果类,如果有两个连字符,我需要忽略第二个

有什么想法吗

资产清单示例: 类别==“动物” 如果有两个连字符,我需要在第二个拆分。 assetList=“鱼马克、猫吉姆、蓝狗亨利、红鸟比尔、绿蛇拉里”

类别==“水果” 如果有两个连字符,我首先需要拆分。 assetList=“莱姆·亨利、柠檬·苏珊、香蕉鲍勃·纳尔逊、苹果里克·琼斯、菠萝山姆·史密斯”

下面是我的代码:

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
(与
子字符串结合使用)