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

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

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

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

Q&A

1回答

199閲覧

単語の抽出が出来ない

syen2501

総合スコア38

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

0グッド

1クリップ

投稿2019/02/21 03:19

私はjsonファイルから読み込んだ特定の語をハイライトで表示するという
プログラムを書いています。
しかし、first_word[0]が「なし」ではない部分の処理で、for文で必要な単語を抽出する際、
なぜかjsonファイル内の回数の部分の「1回」という語だけ抽出出来ていないというバグが起こっています。
原因が分からないので教えていただけると幸いです。

<実行結果>
イメージ説明

typescript

1'use strict'; 2import * as vscode from 'vscode'; 3import * as fs from 'fs'; 4 5 6export function activate(context: vscode.ExtensionContext) { 7 console.log('Congratulations, your extension "semieditor" is now active!'); 8 const readsemiJson = JSON.parse(fs.readFileSync('C:\Users\specification\src\sample.json','utf8')); 9 10 context.subscriptions.push(vscode.commands.registerCommand('extension.color', () => { 11 vscode.window.showInformationMessage("Color Range Word"); 12 const timeWordList = readsemiJson.時間; 13 const strengthTimeWordList = readsemiJson.強時間; 14 const futurePhraseWordList = readsemiJson.未来句; 15 const quantityWordList = readsemiJson.数量; 16 const numberOfHoursWordList = readsemiJson.時数ノ; 17 const strengthQuantityQualifiedWordList = readsemiJson.強数量修飾; 18 const numberOfTimeWordList = readsemiJson.回数; 19 20 //child -> parent(値域) semiについて 21 function fromObjecttoRange(WordList: any,foundWordList: vscode.DecorationOptions[],dependencyRelationList: vscode.DecorationOptions[],Count: number){ 22 const activeEditor = vscode.window.activeTextEditor; 23 const text = activeEditor.document.getText(); //ドキュメント取得 24 if (WordList.length > 0) { 25 let first_word = WordList[0].split('=>'); 26 if (first_word[0] === 'なし') { 27 let rangewordreg = first_word[1]; 28 for (let i = 1; i < WordList.length; i++){ 29 let word = WordList[i].split('=>'); 30 let rangeword = word[1]; 31 rangewordreg = rangewordreg + "|" + rangeword; 32 } 33 } 34 else{ 35 let rangewordreg = first_word[1]; 36 let parentwordreg = first_word[0]; 37 38 for (let i = 1; i < WordList.length; i++){ 39 console.log(WordList[i]); 40 let word = WordList[i].split('=>'); 41 let parentword = word[0]; 42 let rangeword = word[1]; 43 rangewordreg = rangewordreg + "|" + rangeword; 44 parentwordreg = parentwordreg + "|" + parentword; 45 } 46 console.log(rangewordreg); 47 48 const rangewordString = rangewordreg; 49 const parentString = parentwordreg; 50 const regrangeWord = eval("/(" + rangewordString + ")/g;"); 51 const regparentWord = eval("/(" + parentString + ")/g;"); 52 } 53 } 54 } 55

JSON

1{ 2 "回数": [ 3 "「ドア開ブザー鳴動bit」:1を=>1回" 4 ], 5 "強数量修飾": [], 6 "時数ノ": [ 7 "なし=>「初期入力禁止」期間の", 8 "処置=>5系統の" 9 ], 10 "未来句": [], 11 "数量": [ 12 "庫内ファンON=>5分", 13 "処置=>5", 14 "庫内ファン=>5分間、", 15 "「ドア開ブザー鳴動bit」:1を=>1分", 16 "個別処置1(ドア入力R検知時の処置)を=>1", 17 "庫内ファンON=>30秒", 18 "庫内灯=>0→", 19 "庫内ファン=>30秒間、", 20 "「R室ドア状態:開」を=>3" 21 ], 22 "強時間": [ 23 ], 24 "時間": [ 25 ] 26}

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

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

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

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

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

guest

回答1

0

ts

1 else{ 2 let rangewordreg = first_word[1]; 3 let parentwordreg = first_word[0]; 4 5 for (let i = 1; i < WordList.length; i++){ 6 console.log(WordList[i]); 7 let word = WordList[i].split('=>'); 8 let parentword = word[0]; 9 let rangeword = word[1]; 10 rangewordreg = rangewordreg + "|" + rangeword; 11 parentwordreg = parentwordreg + "|" + parentword; 12 } 13 console.log(rangewordreg);

ここのインデックスが1からはじまっているので
console.log(WordList[i])ではWordList[0]が出力されません。
ただしparentwordregは
初期値をfirst_word[0]にしているおかげで表示できているので
出力をみると"「ドア開ブザー鳴動bit」:1を=>1回"は出力されていないのに
”1回”とだけ出力されていますね。

数量に関しても同様に最初の"庫内ファンON=>5分"が出力されていませんが
parentwordregの”5分”だけは出力されています。

なので簡単になおすならこうでしょうか

ts

1 else{ 2 let rangewordreg = ""; 3 let parentwordreg = ""; 4 5 for (let i = 0; i < WordList.length; i++){ 6 console.log(WordList[i]); 7 let word = WordList[i].split('=>'); 8 let parentword = word[0]; 9 let rangeword = word[1]; 10 rangewordreg = rangewordreg + "|" + rangeword; 11 parentwordreg = parentwordreg + "|" + parentword; 12 } 13 console.log(rangewordreg);

投稿2019/02/23 02:34

編集2019/03/16 09:58
user14

総合スコア125

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問