我有這樣的數據片段(這是整個文件的一行的只是其中的一部分):如何實現這個屬性文件?
000000055555444444******4444 YY
我實現這個CSV配置文件,以便能夠讀出的數據的每一部分,並解析它:
128-12,140-22,YY
第一對(128-12)表示在開始讀取什麼在線位置,然後字符的量來讀取,即第一對是帳戶號碼。
第二對如果是卡號。
而thir參數是註冊表名稱。
無論如何,我所做的是String.split(「,」),然後指定數組[0]作爲帳號,等等。
但我想將該CSV配置文件更改爲屬性文件,但我不知道如何實現該解決方案,如果我使用屬性文件我必須添加一堆如果/然後在爲了正確映射了我的價值觀,這裏就是我想這樣做的:
Property cfg = new Property();
cfg.put("fieldName", "accountNumber");
cfg.put("startPosition", "128");
cfg.put("length", "12");
但我不得不說,如果(「字段名」 .equals(「使用accountNumber」)),然後指定使用accountNumber;有沒有一種方法可以實現這一點,以避免執行所有這些決定?現在用我的解決方案,我不必使用ifs,我只說accountNumber = array [0];就是這樣,但我不認爲這是一個很好的解決方案,我覺得用房產會更優雅的或有效的
編輯:
這可能需要一些更多的澄清,這個數據我展示是我目前爲客戶做的解析程序的一部分;這些數據爲許多客戶提供了信息,而且我必須將我從他們那裏收到的大量數據解析爲更具可讀性的內容,以便將其轉換爲PDF文件,到目前爲止該程序正在生產中,我試圖重構它一點點。客戶的所有信息都保存到不同的登記類,有它自己的一套獨特的信息字段的每一個類,可以說,這是RegistryYY會是什麼樣子:
class RegistryYY extends Registry{
String name;
String lastName;
PhysicalAddress address;
public RegistryYY(String dataFromFile) {
}
}
我要實現的物業解決方案,因爲通過這種方式,我可以讓Property來解析文件,或者正確解釋每個Registry類所擁有的數據,我的意思是,Registry應該知道從文件接收到的數據需要哪些數據?如果我這樣做,我可以使每個註冊表成爲一個觀察者,並且他們會通過檢查存儲在當前行中的註冊表名稱來決定從文件讀取的當前行是否屬於他們,然後他們會將已初始化的註冊表返回給只關心接收的呼叫對象並存儲一個註冊表類。
編輯2:
我創造了這個函數返回存儲在每行的位置值:
public static String getField(String fieldParams, String rawData){
// splits the field
String[] fields = fieldParams.split("-");
int fieldStart = Integer.parseInt(fields[0]); // get initial position of the field
int fieldLen = Integer.parseInt(fields[1]); // get length of field
// gets field value
String fieldValue = FieldParser.getStringValue(rawData, fieldStart, fieldLen);
return fieldValue;
}
與CSV文件的工作,我想改變與工作實施該屬性文件,而不是。
@VinceEmigh,因爲OP可能有很多「fieldName」。我不認爲房地產是這方面的良好儲備。也許YAML:http://yamlbeans.sourceforge。net /(看電話號碼的例子) – 2017-06-19 15:37:34
據我所知,OP有某種固定長度的數據(startPosition = 128,length = 12,startPosition = 140,length = 22) – 2017-06-19 15:42:11
@VinceEmigh RC表示,我有很多很多領域,我在我的問題開始時說過,我所展示的僅僅是一行數據的一部分,該文件可以有多達800K +行的數據,到目前爲止,最大的文件具有20K不同的信息客戶端。 –