Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม

วิธี Parse เงิน/สกุลเงินใน JSP ด้วย <fmt:parseNumber>

Tag <fmt:parseNumber> แปลง String เป็น Number (รองรับ currency, percent, number)

Attributes

AttributeคำอธิบายRequiredDefault
valueString ที่จะ parseNoBody
typeNUMBER, CURRENCY, PERCENTNonumber
parseLocaleLocale สำหรับ parsing (สกุลเงิน, decimal format)NoDefault locale
integerOnlytrue/false - parse เฉพาะจำนวนเต็มNofalse
patternCustom parse patternNo-
timeZoneTime zone (ไม่เกี่ยวข้องกับ number)NoDefault
varVariable เก็บ Number objectNoPrint to page
scopeScope ของ varNopage

ตัวอย่าง Parse Currency

<%@ taglib prefix="c" uri="https://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="https://java.sun.com/jsp/jstl/fmt" %>
<html>
<body>
    <h3>Number Parsing</h3>
    <c:set var="balance" value="$1,250,003.35"/>
    
    <fmt:parseNumber var="num1" type="currency" value="${balance}"/>
    <p>Parsed (1): <c:out value="${num1}"/></p>  <-- 1250003.35 -->
    
    <fmt:parseNumber var="num2" type="currency" integerOnly="true" value="${balance}"/>
    <p>Parsed Integer Only: <c:out value="${num2}"/></p>  <-- 1250003 -->
    
    <!-- Thai Baht -->
    <c:set var="thaiPrice" value="฿1,234.56"/>
    <fmt:parseNumber var="thaiNum" type="currency" parseLocale="th_TH" value="${thaiPrice}"/>
    <p>Thai Baht: <c:out value="${thaiNum}"/></p>
</body>
</html>

ผลลัพธ์

Number Parsing:
Parsed (1): 1250003.35
Parsed Integer Only: 1250003
Thai Baht: 1234.56

Parse Locale สำคัญ

  • parseLocale="en_US" - คาดหวัง $1,234.56 (comma grouping, dot decimal)
  • parseLocale="de_DE" - คาดหวัง 1.234,56 (dot grouping, comma decimal)
  • parseLocale="th_TH" - คาดหวัง ฿1,234.56

ข้อควรระวัง

  • Input string ต้อง match locale pattern ไม่งั้น parse fail
  • Currency symbol อาจต้องมีใน string (ขึ้นอยู่กับ locale)
  • Java 8+: ใช้ NumberFormat.getCurrencyInstance(locale).parse() ใน Java code แทน

ร่วมกับ <fmt:formatNumber>

Format number → String: <fmt:formatNumber type="currency" value="${1234.56}"/>
Parse String → Number: <fmt:parseNumber type="currency" value="${input}"/>