指定した文字列が含まれるか判定する<logic:match、notMatch>

本文介绍如何使用Struts框架中的&lt;logic:match&gt;和&lt;logic:notMatch&gt;标签来检查字符串是否包含特定子串。通过一个JSP页面示例展示了不同情况下(如前方一致、后方一致等)的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 指定した文字列が含まれるか判定する場合、<logic:match>または<logic:notMatch>を使用します。

タグの主要属性
属性概要
nameスコープに登録されているBean名を指定します
property出力対象のBeanのプロパティを指定します。
value比較する基準となる値を指定します。
locationstartと指定した場合は前方一致。
endと指定した場合は、後方一致。
省略時は、文字列中のどこに含まれてもよい。
scopename属性で指定したオブジェクトを取り出すscopeを指定します。指定しない場合、pege、request、session、spplicationの順で検索します。
cookieクッキーの値と比較する場合、name属性の変わりにcookie属性を指定します。
headerhttpヘッダーの値と比較する場合、name属性の変わりにheader属性を指定します。
parameterリクエストパラメータの値と比較する場合、name属性の変わりにparameter属性を指定します。


例1)JSP実装例

<%@ page pageEncoding = "Shift_JIS" %>
<%@ page contentType="text/html; charset=Shift_JIS" %>
<%@ taglib uri="/tags/struts-logic" prefix="logic" %>
<%@ taglib uri="/tags/struts-bean" prefix="bean" %>

<bean:define id="str" value="ABCZZZ" />

<html><body>

<%-- 変数「str」内に文字列"ABC"が含まれるかをチェックする条件式 --%>
<logic:match name="str" value="ABC" >
  location指定無しで一致 <br><br>
</logic:match>

<%-- 変数「str」の先頭が文字列"ABC"であるかかをチェックする条件式 --%>
<logic:match name="str" value="ABC" location="start" >
  location="start"で一致 <br><br>
</logic:match>

<%-- 変数「str」の最後が文字列"ABC"であるかをチェックする条件式 --%>
<logic:match name="str" value="ABC" location="end" >
  location="end"で一致 <br><br>
</logic:match>

<%-- 変数「str」の最後が文字列"ABC"でないかをチェックする条件式 --%>
<logic:notMatch name="str" value="ABC" location="end">
  location="end"で不一致 <br><br>
</logic:notMatch>

</body></html>


画面イメージ






AtCoder 王国を治める高橋君は、英小文字のアルファベット順を変更することにしました。 新たなアルファベット順はa , b , …, z を並べ替えて得られる文字 X を用いて表されます。X の i (1 ≤ i ≤ 26) 文字目は、新たな順番において i 番目に小さい英小文字を表します。 AtCoder 王国には N 人の国民おり、それぞれの国民の名前は S1​, S2​, …, SN​ です。ここで、Si​ (1 ≤ i ≤ N) は英小文字からなります。 これらの名前を、高橋君の定めたアルファベット順に基づく辞書順に従って並べ替えてください。 辞書順とは? 辞書順とは簡単に説明すると「単語辞書に載っている順番」を意味します。より厳密な説明として、英小文字からなる相異なる文字 S, T の大小を判定するアルゴリズムを以下に説明します。 以下では「 S の i 文字目の文字」を Si​ のように表します。また、 S T より辞書順で小さい場合は S < T 、大きい場合は S > T と表します。 S, T のうち長さ大きくない方の文字の長さを L とします。i=1,2,…,L に対して Si​ と Ti​ 一致するか調べます。 Si​ = Ti​ である i 存在する場合、そのような i のうち最小のものを j とします。そして、Sj​ と Tj​ を比較して、Sj​ Tj​ よりアルファベット順で小さい場合は S < T 、そうでない場合は S > T と決定して、アルゴリズムを終了します。 Si​ = Ti​ である i 存在しない場合、S と T の長さを比較して、S T より短い場合は S < T 、長い場合は S > T と決定して、アルゴリズムを終了します。 以上题目请用c++
03-12
### 实现基于自定义字母顺序的字符串数组排序 为了实现基于自定义字母顺序的字符串数组排序,在 C++ 中可以采用如下方法: 创建一个映射表 `map<char, int>` 来存储每个字符的新权重。通过读取给定的自定义字母顺序,依次为每个字符分配从小到大的整数值作为其新权重。 编写比较函数用于标准库中的 `sort` 函数。此比较函数接收两个字符串参数并依据上述构建好的映射表决定先后次序。具体来说,逐位对比两串相同位置上的字符所对应的权重值;一旦发现差异即刻返回结果,当一方较早结束而另一方仍有剩余,则视作前者小于后者处理。 最后调用 STL 提供的 `std::sort()` 排序接口,并传入自定义的比较逻辑完成整个过程[^1]。 ```cpp #include <iostream> #include <vector> #include <algorithm> using namespace std; bool customCompare(const string& a, const string& b, unordered_map<char, int>& orderMap) { size_t minLength = min(a.size(), b.size()); for (size_t i = 0; i < minLength; ++i){ if(orderMap[a[i]] != orderMap[b[i]]) return orderMap[a[i]] < orderMap[b[i]]; } // If all characters are equal up until one string ends, // then shorter or lexicographically smaller comes first. return a.size() < b.size(); } void sortByCustomOrder(vector<string>& words, const string& order) { unordered_map<char, int> orderMap; for(int i = 0; i < order.size(); ++i) orderMap[order[i]] = i; stable_sort(words.begin(), words.end(), [&orderMap](const string& a, const string& b) -> bool{ return customCompare(a, b, orderMap); }); } ``` #### 注意事项 - 使用 `stable_sort` 而不是普通的 `sort` 可以保持相等元素之间的相对顺序不变。 - 自定义比较器接受额外参数的方式是利用 lambda 表达式的捕获表特性引入外部变量 `orderMap`.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值