質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.47%
JavaScript

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

Q&A

解決済

3回答

956閲覧

JavaScriptで文字列を分割する方法

mermer

総合スコア16

JavaScript

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

0グッド

0クリップ

投稿2020/01/15 05:42

編集2020/01/15 06:10

JavaScriptにて,文字列を任意の箇所で分割する方法を考えています.
文字列を選択し,そのスタート位置と終了位置を使って分割したいと考えています.

例:’文字列を任意の箇所で’で分割する. JavaScriptにて,文字列を任意の箇所で分割する方法はありますでしょうか?      ↓ ['JavaScripにて,','文字列を任意の箇所で','分割する方法はありますでしょうか?']

現在は愚直に1文字1文字分割しfor文で回しています.ほかの方法がございましたらご教授いただければ幸いです.またJavaScriptを最近始めましたので,アドバイスがあればお願いいたします.

JavaScript

1function(){ 2 var obj = document.getSelection(); 3 var beforeTextArr = document.getElementById('targetText').innerHTML; 4 var afterTextArr = []; 5 if (obj.anchorOffset>0){ 6 var afterText = ''; 7 for(var i=0; i< obj.anchorOffset; i++){ 8 afterText += beforeTextArr[i]; 9 } 10 afterTextArr.push(afterText); 11 12 afterText=''; 13 for(var i=obj.anchorOffset; i<obj.focusOffset;i++){ 14 afterText += beforeTextArr[i]; 15 } 16 afterTextArr.push(afterText); 17 18 afterText=''; 19 for(var i=obj.focusOffset; i<beforeTextArr.length;i++){ 20 afterText += beforeTextArr[i]; 21 } 22 afterTextArr.push(afterText); 23 24 console.log(afterTextArr);//出力 25 }else{ 26 var afterText = ''; 27 for(var i=obj.anchorOffset; i<obj.focusOffset;i++){ 28 afterText += beforeTextArr[i]; 29 } 30 afterTextArr.push(afterText); 31 32 afterText=''; 33 for(var i=obj.focusOffset; i<beforeTextArr.length;i++){ 34 afterText += beforeTextArr[i]; 35 } 36 afterTextArr.push(afterText); 37 38 console.log(afterTextArr);//出力 39 } 40}

追記:

text = 'AAAABBBBCCCC' ↓ 5,6文字目のBBを選択した場合 result=['AAAA','BB','BBCCCC'] 7,8文字目のBBを選択した場合 result=['AAAABB','BB','CCCC'] のようなことです.

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

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

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

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

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

papinianus

2020/01/15 06:09

jun68ykt様へのコメントでやりたいことがわからなくなりました。 分割は3つになるわけではないのですよね?で、分割の手掛かりとして何が指定されるのですか?
mermer

2020/01/15 06:12

追記させていただきました. 文字列を選択したところで区切りたいです.
papinianus

2020/01/15 06:14

['AA','AABBBBBCCCC']このパターンは一体どこを選択したのですか?
mermer

2020/01/15 06:16

最初のAAもしくは後ろのAABBBBCCCCです.
papinianus

2020/01/15 06:18

了解です。ありがとうございます
mermer

2020/01/15 06:28

Zuishin様,部分文字列しか取れないのでできないと思いましたが,そちらでできそうですね. 失礼しました.試してみます.
guest

回答3

0

こんにちは

以下で出来るかと思います。

javascript

1const text = 'JavaScriptにて,文字列を任意の箇所で分割する方法はありますでしょうか?'; 2const subText = '文字列を任意の箇所で'; 3 4const regexp = new RegExp(`(${subText})`); 5 6const result = text.split(regexp); 7 8console.log(result); // => ["JavaScriptにて,", "文字列を任意の箇所で", "分割する方法はありますでしょうか?"]

参考になれば幸いです。

投稿2020/01/15 05:50

jun68ykt

総合スコア9058

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

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

mermer

2020/01/15 06:05

質問の例文が悪かったです. 例えば文字列'AAAABBBBCCCC'に対して ['AA','AABBBBBCCCC']や ['AAAABBB','BB','CCCC'] で分割することは可能でしょうか? 正規表現での検索は難しいですか?
papinianus

2020/01/15 06:18

こちらに失礼。質問コードのobjをobj.toString()をして、こちらの回答のsubTextに代入することで追記した目的ら達成できませんか?
mermer

2020/01/15 06:22

試しました. 例えば文字列を'AAAABBBBCCCC'とし最初のAA2文字を選択,subTextに代入すると, ["", "AA", "", "AA", "BBBBCCCC"]が出力されます. 求める結果は["AA","AABBBBCCCC"]です.
guest

0

自己解決

こちらで解決しました.
Zuishin様,ありがとうございます.
他の皆様も貴重なお時間ありがとうございました.

JavaScript

1function f(){ 2 var obj = document.getSelection(); 3 var beforeText = document.getElementById('targetText').innerHTML; 4 var result = []; 5 result.push(beforeText.substring(0,obj.anchorOffset)); 6 result.push(beforeText.substring(obj.anchorOffset,obj.focusOffset)); 7 result.push(beforeText.substring(obj.focusOffset,beforeText.length)); 8 9 console.log(result);//出力 10}

投稿2020/01/15 06:34

mermer

総合スコア16

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

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

0

こんな方法とか。

javascript

1const divide = (text, offsets) => { 2 return offsets.reduce((a, c, i) => 3 { 4 if (i == 0) { 5 return [text.slice(0, c), text.slice(c)] 6 } else { 7 const last = a.length - 1 8 const p = text.length - a[last].length 9 return [...a.splice(0, last), text.slice(p, c), text.slice(c)] 10 } 11 }, 12 []) 13} 14 15text = 'JavaScriptにて,文字列を任意の箇所で分割する方法はありますでしょうか?' 16offsets = [12, 23] 17console.log(divide(text, offsets))

実行結果

[ 'JavaScriptにて', ',文字列を任意の箇所で', '分割する方法はありますでしょうか?' ]

投稿2020/01/15 06:21

shiracamus

総合スコア5406

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問