您将如何解决以下逻辑:
我有带有单元格的pdf文件:
addressLine1
addressLine2
addressLine3
addressLine4
addressLine5
cityStateZip
所有人都有吸气剂。 有时,所有字段都有数据,有时却没有。
为了使它漂亮,我希望它们组合在一起,即:
1261 Graeber St (address4)
Bldg 2313 Rm 24 (address5)
Pensacola FL 32508 (cityStateZip)
如果addressLine1
是唯一存在的地址,则需要将其中一些地址视为空白。
1261 Graeber St (address5)
Pensacola FL 32508 (cityStateZip)
此处,由于address2
,address3
,address4
为空,我们将address1
移至pdf单元格address5
我的代码现在打印:
1261 Graeber St (address1)
(address2)
(address3)
(address4)
(address5)
Pensacola FL 32508 (cityStateZip)
以下是代码:
FdfInput.SetValue("addressLine1", getAddressLine1() );
FdfInput.SetValue("addressLine2", getAddressLine2() );
FdfInput.SetValue("addressLine3", getAddressLine3() );
FdfInput.SetValue("addressLine4", getAddressLine4() );
FdfInput.SetValue("addressLine5", getAddressLine5() );
FdfInput.SetValue("addressLine6", getCityStateZip() );
左边的图片是它现在的样子,我希望它像右边的图片。
这是LinkedList.insertLast()
的好候选人吗?
答案 0 :(得分:1)
此:
if(!getAddressLine1().isEmpty())
FdfInput.SetValue("addressLine1", getAddressLine1());
if(!getAddressLine2().isEmpty())
FdfInput.SetValue("addressLine2", getAddressLine2());
if(!getAddressLine3().isEmpty())
FdfInput.SetValue("addressLine3", getAddressLine3());
if(!getAddressLine4().isEmpty())
FdfInput.SetValue("addressLine4", getAddressLine4());
if(!getAddressLine5().isEmpty())
FdfInput.SetValue("addressLine5", getAddressLine5());
if(!getCityStateZip().isEmpty())
FdfInput.SetValue("cityStateZip", getCityStateZip());
换句话说,如果要添加到行中的数据,请执行此操作,否则,完全跳过它。例如,让我们说除了address3,address5和cityStateZip之外,所有字段都是空的。
// The output will not look like this:
addressLine3
addressLine5
cityStateZip
相反,它看起来像:
addressLine3
addressLine5
cityStateZip
答案 1 :(得分:1)
我通过在数组列表中存储字符串并在名称上递减计数器来解决它:
List<String> addrLines = new ArrayList<String>();
if(!getCityStateZip().isEmpty())
addrLines.add(getTomaCityStateZip());
if(!getAddressLine5().isEmpty())
addrLines.add(getAddressLine5());
if(!getAddressLine4().isEmpty())
addrLines.add(getAddressLine4());
if(!getAddressLine3().isEmpty())
addrLines.add(getAddressLine3());
if(!getAddressLine2().isEmpty())
addrLines.add(getAddressLine2());
if(!getAddressLine1().isEmpty())
addrLines.add(getAddressLine1());
for (int i = addrLines.size(); i > 0; --i)
{
int line = addrLines.size() - i;
String field = String.format("addressLine%d", 6 - line);
FdfInput.SetValue(field, addrLines.get(line));
}