如何构造一个函数,查询一个字符串固定位置的固定字母。
比方说:一个5个字符的字符串,查询第二个位置上位e,第4个位置上为r,即“?e?r?”我知道可以用if(str.CharAt[1].equals('e')&&str.CharAt[3].equals('r')),
但是这是嵌入式的办法,我的问题是如何实现参数化的查询,就是说,查询固定长度字符串中,任意组合位置上的任意组合字母。
比方说"a??e?",或者"???a?","abo??"等等,以此类推。这些查询可以用个别不同的逻辑表达式,但是有没有更general的办法表达。
也就是说java里面能不能实现参数化的逻辑运算?或者说有没有类似宏一类的办法来自动生成要查询的逻辑表达式?
跪求请高手指点!或者说解决这个问题需要学习哪方面的知识?
谢谢!
------解决方案--------------------------------------------------------
- Java code
package com.collection;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.Map.Entry;public class TestMap { /** * @param args */ public static void main(String[] args) { //Map<索引, 字符> Map<Integer,Character> map = new HashMap<Integer,Character>(); map.put(1,'e') ; map.put(3,'c') ; System.out.println(isRight("1e3b0", map)) ; } @SuppressWarnings("rawtypes") public static boolean isRight(String str, Map<Integer,Character> map){ Iterator<Entry<Integer, Character>> it = map.entrySet().iterator(); while(it.hasNext()){ Map.Entry m=(Entry<Integer, Character>)it.next(); Integer key = (Integer) m.getKey() ; Character value = (Character)m.getValue() ; int k = key ; char v = value ; if (! (str.charAt(k) == v ) ){ return false ; } } return true ; }}