日期:2014-05-20  浏览次数:20729 次

宝剑配英雄,高分送高人,关于参数化的逻辑运算,求助!
如何构造一个函数,查询一个字符串固定位置的固定字母。

比方说:一个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 ;

        }

}