\r\n\r\n```","dateModified":"2017-06-12T00:43:05.484Z","datePublished":"2017-06-12T00:43:05.484Z","upvoteCount":2,"url":"https://teratail.com/questions/79960#reply-125667","comment":[]},{"@type":"Answer","text":"正規表現を使って、以下のようにすることが出来ます。\r\n\r\n```Javascript\r\nvar deli = \",\";\r\n// 頭から一つ目のdelimiterまでと、delimiterから最後までを分離する正規表現\r\nvar reg = new RegExp(\"^([^\" + deli + \"]*)\" + deli + \"(.*)\"); \r\nvar res = reg.exec(\"りんご,レモン,すいか,ぶどう\");\r\nconsole.log(res[1]) // \"りんご\"\r\nconsole.log(res[2]) // \"レモン,すいか,ぶどう\"\r\n```\r\n\r\nちょっと邪道ですが、こんなやり方もあります。\r\n```Javascirpt\r\nvar str = \"りんご,レモン,すいか,ぶどう\";\r\nvar dlm = \",\";\r\nvar sp = str.split(dlm, 2); \r\nsp[1] = str.replace(sp[0] + dlm, \"\");\r\n```","dateModified":"2017-06-11T23:57:13.796Z","datePublished":"2017-06-11T23:57:13.796Z","upvoteCount":2,"url":"https://teratail.com/questions/79960#reply-125655","comment":[]},{"@type":"Answer","text":"分割が一か所なので、分割位置をindexOfで調べ、substringで分割位置前後の部分文字列をそれぞれ取り出し、それらを配列にすればよいと思います。\r\n\r\n```javascript\r\n// Stringの拡張としてdivideTwoメソッドを定義した例\r\nString.prototype.divideTwo = function (delimiter) {\r\n  var pos = this.indexOf(delimiter);\r\n  if (pos >= 0)\r\n    return [this.substring(0, pos), this.substring(pos + delimiter.length)];\r\n  else\r\n    return [this];\r\n}\r\n\r\n// お試し\r\nvar ar = [\"a\", \"a,b\", \"a,b,c\"]\r\nar.forEach(s => {\r\n  console.log(\"s = \" + s);\r\n  console.log(\"divideTwo = \" + JSON.stringify(s.divideTwo(\",\")));\r\n});\r\n\r\n結果==>\r\n\r\ns = a\r\ndivideTwo = [\"a\"]\r\ns = a,b\r\ndivideTwo = [\"a\",\"b\"]\r\ns = a,b,c\r\ndivideTwo = [\"a\",\"b,c\"]\r\n```","dateModified":"2017-06-11T22:46:40.904Z","datePublished":"2017-06-11T22:46:40.904Z","upvoteCount":2,"url":"https://teratail.com/questions/79960#reply-125648","comment":[{"@type":"Comment","text":"\r\n皆さん回答頂きありがとうございます。\r\n分割は出来たのですが、その後matchを使いたくて。\r\nそれが出来ないでいます。","datePublished":"2017-06-12T01:01:16.637Z","dateModified":"2017-06-12T01:01:16.637Z"},{"@type":"Comment","text":"質問内容に書かれていることと違うようですが・・・\r\n質問したい内容はよく整理して個別に端的に質問することをお勧めします。「プログラムを完成させる」という目的に向かって頑張っているのはわかるのですが、質問内容に書かれていない質問をコメント欄でやってしまうとQ&Aが発散してしまいますので。別の内容の疑問がわいたなら新たに質問を挙げた方がよいですよ?","datePublished":"2017-06-12T01:22:24.193Z","dateModified":"2017-06-12T01:22:24.193Z"},{"@type":"Comment","text":"アドバイスありがとうございます。\r\n簡単なテスト用データを使って個別で作ったものは動くが、何かで出されたものに対しては出来ないことが多くて、つい続けてしまいました。\r\nわかりやすく質問するよう心がけていきたいと思います。","datePublished":"2017-06-12T07:57:04.159Z","dateModified":"2017-06-12T07:57:04.159Z"}]}],"breadcrumb":{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"item":{"@id":"https://teratail.com","name":"トップ"}},{"@type":"ListItem","position":2,"item":{"@id":"https://teratail.com/tags/JavaScript","name":"JavaScriptに関する質問"}},{"@type":"ListItem","position":3,"item":{"@id":"https://teratail.com/questions/79960","name":"javaScriptのsplitについて"}}]}}}
split("x")で、yが1度目に出てきたのみ分割し、その後にxがいくつ現れても分割しないということは可能でしょうか。 
split("x",2)ですと3度目以降分割されたものがなくなってしまうので、違うと思うのですが。 
切り取りではなくあくまで分割が希望です。
"x"が","のとき "りんご,レモン,すいか,ぶどう"; を 
fruit[0] = "りんご"; 
fruit[1] = "レモン"; 
fruit[2] = "すいか"; 
fruit[3] = "ぶどう";
ではなく 
fruit[0] = "りんご"; 
fruit[1] = "レモン,すいか,ぶどう";
としたいです。
べたな方法
javascript
1 < script > 
 2 var  str  =   "りんご,レモン,すいか,ぶどう" ; 
 3 var  a = [ ] ; 
 4 str . split ( "," ) . map ( function ( i , j ) { 
 5    if ( j <= 1 )  a . push ( i ) ; 
 6    else  a [ 1 ] += "," + i ; 
 7 } ) ; 
 8 console . log ( a ) ; 
 9 < / script > 
 10 
正規表現を使って、以下のようにすることが出来ます。
Javascript
1 var  deli  =   "," ; 
 2 // 頭から一つ目のdelimiterまでと、delimiterから最後までを分離する正規表現 
 3 var  reg  =   new   RegExp ( "^([^"   +  deli  +   "]*)"   +  deli  +   "(.*)" ) ;  
 4 var  res  =  reg . exec ( "りんご,レモン,すいか,ぶどう" ) ; 
 5 console . log ( res [ 1 ] )   // "りんご" 
 6 console . log ( res [ 2 ] )   // "レモン,すいか,ぶどう" 
 
ちょっと邪道ですが、こんなやり方もあります。
Javascirpt
1 var str = "りんご,レモン,すいか,ぶどう";
 2 var dlm = ",";
3 var sp = str.split(dlm, 2); 
4 sp[1] = str.replace(sp[0] + dlm, "");
分割が一か所なので、分割位置をindexOfで調べ、substringで分割位置前後の部分文字列をそれぞれ取り出し、それらを配列にすればよいと思います。
javascript
1 // Stringの拡張としてdivideTwoメソッドを定義した例 
 2 String . prototype . divideTwo   =   function   ( delimiter )   { 
 3    var  pos  =   this . indexOf ( delimiter ) ; 
 4    if   ( pos  >=   0 ) 
 5      return   [ this . substring ( 0 ,  pos ) ,   this . substring ( pos  +  delimiter . length ) ] ; 
 6    else 
 7      return   [ this ] ; 
 8 } 
 9 
10 // お試し 
 11 var  ar  =   [ "a" ,   "a,b" ,   "a,b,c" ] 
 12 ar . forEach ( s   =>   { 
 13    console . log ( "s = "   +  s ) ; 
 14    console . log ( "divideTwo = "   +   JSON . stringify ( s . divideTwo ( "," ) ) ) ; 
 15 } ) ; 
 16 
17 結果 = => 
 18 
19 s  =  a
 20 divideTwo  =   [ "a" ] 
 21 s  =  a , b
 22 divideTwo  =   [ "a" , "b" ] 
 23 s  =  a , b , c
 24 divideTwo  =   [ "a" , "b,c" ] 
15分調べてもわからないことは teratailで質問しよう!
ただいまの回答率 85.29%
質問をまとめることで 思考を整理して素早く解決
テンプレート機能で 簡単に質問をまとめる
質問する 
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。