問題 No.1
開始有個需求就是在一個TextField 框中對值進(jìn)行判斷類似 if ... else ....結(jié)構(gòu)
if (value 1){
result 1
}else if (value 2){
result 2
}else if (value 3){
result 3
}
我們是對幣種進(jìn)行判斷,最后在考慮使用了 三目運(yùn)算符
($F{LOAN_CCY}.equals("USD")?"$":$F{LOAN_CCY}.equals("HKD")?"HK$":"")
然后就報錯了
illegal string body character after dollar sign;
solution: either escape a literal dollar sign "$5" or bracket the value expression "${5}" @ line 295, column 82.
美元符號后的非法字符串主體字符;
解決方案:要么轉(zhuǎn)義字面美元符號“\ $ 5”鲤脏,要么將值表達(dá)式“$ {5}”@第295行第82列括起來蜒什。
可以看到是轉(zhuǎn)義出了問題,但具體怎么解決呢 ?最后還是在別人的博客上面找到的解決方法:是寫法問題
http://www.lxway.com/455402591.htm
Use ‘ or / to delimit the replacement string:
"$"
應(yīng)寫為
'$'
OK炕倘,知道問題出在哪兒后 改了就行了宙项。然后還是報錯了鲸阻。
mismatched character 'K' expecting '''
不匹配的字符'K'期待'''
這就很尷尬了切诀。也就是說 $ 符號是個很特殊的存在,使用 ' ' 的時候只能一個值斜纪,如果存在別的值那么就需要轉(zhuǎn)義贫母,可巧不巧的轉(zhuǎn)義我也不會,網(wǎng)上搜了一圈兒傀广,也沒見說起這事兒的颁独。
可問題總要解決彩届,在 stackoverflow 上搜問題時伪冰,找到了一個很騷的操作:
https://stackoverflow.com/questions/7967918/illegal-string-body-character-after-dollar-sign
The solution from tim_yates does not work in some contexts, e.g. in a Jasper report. So if still everything with a
$
sign wants to be interpreted as some variable (${varX}
), e.g. in
"xyz".replaceAll("^(.{4}).{3}.+$", "$1...")
then simply make the dollar sign a single concatenated character
'$'
, e.g.
"xyz".replaceAll("^(.{4}).{3}.+"+'$', '$'+"1...")
或許我可以試試 拼接一下。
($F{LOAN_CCY}.equals("USD")?'$':$F{LOAN_CCY}.equals("HKD")?"HK"+'$':"")
OK .問題解決樟蠕,感謝國外大佬贮聂。
問題 No.2
大家知道一些貨幣的符號 不可能單是一個字符,如人民幣:¥ 和港元 HK$寨辩。那么就又導(dǎo)致了一個問題:如果模板中的金額小寫前是需要加上貨幣符號的話吓懈,要做到靈活多變,那么貨幣符號有時是一個字符靡狞,有時是三個字符耻警,這樣就會導(dǎo)致樣式多變而且看起來很丑陋。
我們是要做到多貨幣支持的甸怕,不能舍一取二甘穿,這樣很沒范兒。想不到辦法梢杭,只好去求助項(xiàng)目經(jīng)理温兼,大佬給出了一個解決辦法:
把貨幣符號和金額小寫做到一塊兒
這樣就解決了貨幣符號長度不一導(dǎo)致的樣式丑陋問題:
($F{LOAN_CCY}.equals("USD")?'$':$F{LOAN_CCY}.equals("HKD")?"HK"+'$':"")+new DecimalFormat("##,##0.00").format($F{SMALL_ORIG_PRCP})
同時也捎帶做了金額格式化的問題,一舉兩得武契。
這就是今天遇到的一些問題募判,不是很嚴(yán)重但是思路很巧妙荡含,特此記下。