2016-08-03 1 views
1

私はAngularJSの単一ページアプリケーションで作業しています。Excel to Javascript - Excelからコピーされた列の改行文字を無視する

ユーザーがExcelからいくつかの行を貼り付けることができるテキスト領域があります。すべての行は同じ数の列を持ちます。私はこの貼り付けられたデータを処理し、それをjavascript配列に変換する必要があります。文字列を\ r \ nまたは\ nまたは\ rで、フィールドを\ tで分割できるので、これは問題ではありません。

問題は、新しい行の文字が列の1つに存在する場合に発生します。しかし、その場合には、列は引用符( ")で囲まれている。

私は正規表現がここで役に立つことができることを理解しています。しかし、私は引用符で改行文字を無視するように正規表現を構築するのに苦労しています。

//PastedItemData will have the following data 
1PS133-0FGD61**\t**"Text with**\r\n**multiple**\r\n**lines"**\t**1**\t**5932.2**\r\n**2PS133-0FGD61**\t**"Simple text with no new lines"**\t**2**\t**1234.5 

var PastedItemDataArray = PastedItemData.split("\r\n"); ///use regex here? 

私は他の誰かがデータの新しい行を無視して、同様の問題に直面している可能性があると確信しています。おそらく、正規表現を使用するよりも別の方法があるかもしれない。持っていずれかの任意のアイデア?

感謝。

+0

可能な複製(http://stackoverflow.com/questions/454908/split-java-string-by-new-line) –

+0

...まあここには「Java」はありません。 – developer033

答えて

0

私は通常のexpreでそれを行うことができませんでしたこのコードは動作します。 Mr.7 @

var PastedItemData = '1PS133-0FGD61**\t**"Text with**\r\n**multiple**\r\n**lines"**\t**1**\t**5932.2**\r\n**2PS133-0FGD61**\t**"Simple text with no new lines"**\t**2**\t**1234.5'; 
var i,c,ignore,cr,nl; 
var rows,row,str; 
ignore = false; 
str = ""; 
rows = []; 
row = []; 
for (i = 0; i < PastedItemData.length; i++) { 
    c = PastedItemData[i]; 
    if (ignore === true && c !== '"') { 
     str += c; 
    } else { 
     switch (c) { 
      case '"': 
       ignore = !ignore; 
       str += c; 
       cr = false; 
       break; 
      case "\r": 
       cr = true; 
       break; 
      case "\n": 
       if (cr === true) { 
        row.push(str); 
        rows.push(row); 
        row = []; 
        str = ""; 
        c = ""; 
        cr = false; 
       } 
       break; 
      case "\t": 
       row.push(str); 
       str = ""; 
       cr = false; 
       break; 
      default: 
       str += c; 
       cr = false; 
       break; 
     } 
    } 
} 
row.push(str); 
rows.push(row); 
console.log(rows); 
[改行で分割Javaの文字列]の
+0

それは動作します。ただし、列の1つに\ r \ nがあった場合は失敗します。その特定の\ r \ nまたは\ rまたは\ nを無視する方法を見つけようとしています。 2列目に「\ r \ n複数\ r \ n行のテキスト」があるとします。 – Vikram

+0

こんにちは、それは動作します。改行文字が1つだけ出現した場合にのみ有効です。私はそれが引用符内の新しい行の最後の出現を無視していると思う。 – Vikram

+0

ご協力いただきありがとうございます。引用符で囲まれた複数の改行を無視するように拡張する方法を見つけた場合は、教えてください。それは大きな助けになるでしょう。私はregexrのリンクにそれを試しています:(http://regexr.com/3dut6) – Vikram

関連する問題