关于<c:if >判断 char 类型

Bug : 使用<c:if> 判断 char类型的数值时,等值判断无效。

经历:后台数据库保存某个状态的时候经常使用char类型去定义字段,然后规定某个代码为某个状态,如 ‘0’ 为 ‘有’,‘1’ 为 ‘无’ ,页面查询列表展示的时候经常要队该字段进行处理,需要显示‘有’或者‘无’,而不是‘0’或‘1’,常见的办法就是使用核心标签库中的<c:if>标签:

<c:if test="${deptInfo.sts eq '0' }" >有效</c:if>
<c:if test="${deptInfo.sts eq '1' }" >无效</c:if> 

然而页面上状态字段却不显示。


原因:char 类型的数据进行比较时,需要先把它转换成ASCII码对应的十进制,再进行比较。

提示:char类型 0-9 对应 ASCII十进制  48-57 ;     A-Z : 65 - 90   ;      a-z : 97-122  (这些时比较常用的)

解决方案:

<c:if test="${deptInfo.sts eq '48' }" >有效</c:if>

<c:if test="${deptInfo.sts eq '49' }" >无效</c:if>

在 C++ 中,如果你有一个 `std::vector<std::string> aa`,并且你想查找一个 C 风格字符串(即 `char[]` 或 `const char*`)是否存在于这个 vector 中,你可以使用标准库中的 `std::find` 算法。 由于 `std::find` 支持比较不同类型,只要它们可以转换为相同的类型进行比较,在这里我们可以将 `char[]` 转换为 `std::string` 来与 vector 中的元素进行比较。 --- ## ✅ 示例代码 ```cpp #include <iostream> #include <vector> #include <string> #include <algorithm> // std::find int main() { std::vector<std::string> aa = {"apple", "banana", "cherry", "date"}; char target_char[] = "cherry"; // 将 char[] 转换为 std::string 用于比较 auto it = std::find(aa.begin(), aa.end(), std::string(target_char)); if (it != aa.end()) { std::cout << "找到匹配项: " << *it << std::endl; } else { std::cout << "未找到匹配项" << std::endl; } return 0; } ``` --- ## 🔍 代码解释 - `std::vector<std::string> aa`:存储多个字符串。 - `char target_char[] = "cherry"`:要查找的目标 C 字符串。 - `std::find(aa.begin(), aa.end(), std::string(target_char))`: - 将 `target_char` 转换为 `std::string` 后传入 `std::find`。 - `std::find` 返回一个迭代器,如果找到则指向该元素,否则返回 `aa.end()`。 - `if (it != aa.end())`:判断是否找到目标字符串。 --- ## ✅ 补充说明 如果你想比较时忽略大小写或者进行更复杂的查找,可以使用自定义函数配合 `std::find_if`。 例如: ```cpp #include <cctype> // for tolower bool iequals(const std::string& a, const std::string& b) { if (a.size() != b.size()) return false; for (size_t i = 0; i < a.size(); ++i) if (std::tolower(a[i]) != std::tolower(b[i])) return false; return true; } // 使用 find_if 实现不区分大小写的查找 char target_char[] = "CHERRY"; auto it = std::find_if(aa.begin(), aa.end(), [&](const std::string& s) { return iequals(s, target_char); }); if (it != aa.end()) { std::cout << "找到匹配项(忽略大小写): " << *it << std::endl; } ``` --- ##
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值