\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について"}}]}}}
質問するログイン新規登録

Q&A

3回答

4467閲覧

javaScriptのsplitについて

kusunoki

総合スコア17

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2017/06/11 20:46

編集2017/06/11 20:47

0

1

split("x")で、yが1度目に出てきたのみ分割し、その後にxがいくつ現れても分割しないということは可能でしょうか。
split("x",2)ですと3度目以降分割されたものがなくなってしまうので、違うと思うのですが。
切り取りではなくあくまで分割が希望です。

"x"が","のとき "りんご,レモン,すいか,ぶどう";
fruit[0] = "りんご";
fruit[1] = "レモン";
fruit[2] = "すいか";
fruit[3] = "ぶどう";

ではなく
fruit[0] = "りんご";
fruit[1] = "レモン,すいか,ぶどう";

としたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

べたな方法

javascript

1<script> 2var str = "りんご,レモン,すいか,ぶどう"; 3var a=[]; 4str.split(",").map(function(i,j){ 5 if(j<=1) a.push(i); 6 else a[1]+=","+i; 7}); 8console.log(a); 9</script> 10

投稿2017/06/12 00:43

yambejp

総合スコア118173

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

正規表現を使って、以下のようにすることが出来ます。

Javascript

1var deli = ","; 2// 頭から一つ目のdelimiterまでと、delimiterから最後までを分離する正規表現 3var reg = new RegExp("^([^" + deli + "]*)" + deli + "(.*)"); 4var res = reg.exec("りんご,レモン,すいか,ぶどう"); 5console.log(res[1]) // "りんご" 6console.log(res[2]) // "レモン,すいか,ぶどう"

ちょっと邪道ですが、こんなやり方もあります。

Javascirpt

1var str = "りんご,レモン,すいか,ぶどう"; 2var dlm = ","; 3var sp = str.split(dlm, 2); 4sp[1] = str.replace(sp[0] + dlm, "");

投稿2017/06/11 23:57

moredeep

総合スコア1507

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

分割が一か所なので、分割位置をindexOfで調べ、substringで分割位置前後の部分文字列をそれぞれ取り出し、それらを配列にすればよいと思います。

javascript

1// Stringの拡張としてdivideTwoメソッドを定義した例 2String.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// お試し 11var ar = ["a", "a,b", "a,b,c"] 12ar.forEach(s => { 13 console.log("s = " + s); 14 console.log("divideTwo = " + JSON.stringify(s.divideTwo(","))); 15}); 16 17結果==> 18 19s = a 20divideTwo = ["a"] 21s = a,b 22divideTwo = ["a","b"] 23s = a,b,c 24divideTwo = ["a","b,c"]

投稿2017/06/11 22:46

KSwordOfHaste

総合スコア18406

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kusunoki

2017/06/12 01:01

皆さん回答頂きありがとうございます。 分割は出来たのですが、その後matchを使いたくて。 それが出来ないでいます。
KSwordOfHaste

2017/06/12 01:22

質問内容に書かれていることと違うようですが・・・ 質問したい内容はよく整理して個別に端的に質問することをお勧めします。「プログラムを完成させる」という目的に向かって頑張っているのはわかるのですが、質問内容に書かれていない質問をコメント欄でやってしまうとQ&Aが発散してしまいますので。別の内容の疑問がわいたなら新たに質問を挙げた方がよいですよ?
kusunoki

2017/06/12 07:57

アドバイスありがとうございます。 簡単なテスト用データを使って個別で作ったものは動くが、何かで出されたものに対しては出来ないことが多くて、つい続けてしまいました。 わかりやすく質問するよう心がけていきたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.29%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問