2016-05-27 5 views
1

各行に5つの数字を持つcsvファイルがあります。私が期待される出力には、この正規表現を使用してcsvをフォーマットする

expected:- 10003478,2/28/12228,4/79/7711479,8/89/15013889,1/20/3070120,2/62/5834262 

のようなものの中に、この文字列を変換する必要があり

a line in csv:- 10003478,12228,7711479,15013889,3070120,5834262 

、「/」の周りの数字は、各番号の下3桁です。

例: - :

,((\d+)(\d)(\d{2})) 

としてreplaceAllを行う12228最後の3桁が228あなたは、このようなパターンを持っている可能性がそのように分離し、2/28/12228

+0

これを解析して(http://opencsv.sourceforge.net/)変換してbac kからファイル。 – Kai

+0

あなたの問題解決のお手伝いをしてもらえませんか? :)なぜ最初の番号は特別なのですか? –

+0

@MinhKieu、そうではありません。私はどこから始めるべきか理解できません。実際には、上記の操作に加えてさらにいくつかのチェックが行われます。どこから始めるべきかのポインタが私を助けてくれます。 最初の数字は変換を必要としない特殊なコードです。 –

答えて

0

に作られています:JavaScriptで

,$3/$4/$1 

例:

console.log("10003478,12228,7711479,15013889,3070120,5834262".replace(/,((\d+)(\d)(\d{2}))/g, ",$3/$4/$1"));

0

あなたは正規表現を使用する必要がありますなぜ私は表示されません。代わりに、ファイルを読み込んで文字列を変換してファイルに書き戻すことができます。以下は、それがOpenCsv

import com.opencsv.CSVReader; 
import com.opencsv.CSVWriter; 
import java.io.FileReader; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.util.Arrays; 
import java.util.List; 


public class JavaApplication22 { 

    public static void main(String[] args) throws IOException { 
     String path = "C:\\Users\\uzochi\\desktop\\numbers.csv"; 
     CSVReader reader = new CSVReader(new FileReader(path)); 
     List<String[]> myEntries = reader.readAll(); 

     for(String[] s : myEntries){ 
      for(int i = 1; i<=5; i++){ 
       String last3 = s[i].substring(s[i].length()-3,s[i].length()); 
       last3 = last3.charAt(0)+"/"+last3.substring(1)+"/"; 
       s[i] = last3+s[i];    
      } 
      System.out.println(Arrays.toString(s)); 
     } 

     CSVWriter writer = new CSVWriter(new FileWriter(path), ','); 
     for(String[] s : myEntries){  
      writer.writeNext(s); 
     } 
    writer.close(); 
    }  
} 

を使用してのような程度openCsv

1

あなたはreplaceAllメソッドを使用して、新しい文字列にそれを保存することができますどのように見えるかの例である:これは生産

import java.io.IOException; 
import java.nio.charset.Charset; 
import java.nio.file.Files; 
import java.nio.file.Path; 
import java.nio.file.Paths; 

public class Main { 

    public static void main(String[] args) throws IOException { 
     // Read file 
     Path filePath = Paths.get("file.txt"); 
     byte[] arr = Files.readAllBytes(filePath); 
     String content = new String(arr, Charset.defaultCharset()); 

     // Replace 
     String newContent = new String(
       content.replaceAll(",([0-9]+)([0-9]{1})([0-9]{2})", ",$2/$3/$1$2$3")); 

     System.out.println(newContent); 
    } 
} 

10003478,2/28/12228,4/79/7711479,8/89/15013889,1/20/3070120,2/62/5834262 
関連する問題