从第一次出现的字符开始拆分字符串

问题描述

| 我在这种格式的日志文件中有多行文本:
topic,this is the message part,with,occasional commas.
如何从第一个逗号分割字符串,以便将主题和消息的其余部分放入两个不同的变量中? 我已经尝试过使用这种拆分,但是当消息部分中的逗号更多时,它将不起作用。
[topic,message] = whole_message.split(\",\",2);
    

解决方法

使用可获取“除第一个逗号以外的所有内容”的正则表达式。所以:
whole_message.match(/([^,]*),(.*)/)
主题为“ 3”,消息为主题“ 4”。     ,这种分解分配在Javascript中不起作用(目前)。尝试这个:
var split = whole_message.split(\',\',2);
var topic = split[0],message = split[1];
编辑—好的,所以\“ split()\”有点坏了;尝试这个:
var topic,message;
whole_message.replace(/^([^,]*)(?:,(.*))?$/,function(_,t,m) {
  topic = t; message = m;
});
    ,javascript的
String.split()
方法已损坏(至少如果您期望与其他语言的
split()
方法提供相同的行为)。 此行为的一个示例:
console.log(\'a,b,c\'.split(\',2))
> [\'a\',\'b\']
并不是
> [\'a\',\'b,c\']
就像您期望的那样。 尝试使用以下拆分功能:
function extended_split(str,separator,max) {
    var out = [],index = 0,next;

    while (!max || out.length < max - 1 ) { 
        next = str.indexOf(separator,index);
        if (next === -1) {
            break;
        }
        out.push(str.substring(index,next));
        index = next + separator.length;
    }
    out.push(str.substring(index));
    return out;
};  
    ,这里!
String.prototype.mySplit = function(char) { 
  var arr = new Array(); 
  arr[0] = this.substring(0,this.indexOf(char)); 
  arr[1] = this.substring(this.indexOf(char) + 1); 
  return arr; 
}

str = \'topic,this is the message part,with,occasional commas.\'
str.mySplit(\',\');
-> [\"topic\",\" this is the message part,occasional commas.\"]
    ,
var a = whole_message.split(\",\");
var topic = a.splice (0,1);
(除非您喜欢用复杂的方式做事)     ,为什么不按逗号分隔,将[0]项目作为主题,然后从原始字符串中删除topic(+,)? 你可以:
var topic = whole_message.split(\",\")[0]
(使用prototype.js)
var message = whole_message.gsub(topic+\",\",\"\") 
(使用jQuery)
whole_message.replace(topic+\",\"\")
或更快速地选择josh.trow