项目中遇到一个需求,需要从表达式中取出其中的中文内容,分别赋值给不同变量,例如
String preString;
String suffixString;String regx="IIF((5>2),上升3,下降2)";
String regx1="IIF((5>2),增加了3,减少了2)";
String regx2="IIF((5>2),流入3,流出2)";
……
等等类似的内容,要求从这个类似的三元表达式取出其中的上升、增加了、流入等赋值给preString,下降、减少了、流出赋值给变量suffixString,兄弟们指点一下迷津

解决方案 »

  1.   

    你为啥一定要用中文处理呢,本身中文处理就麻烦,你不好给中文赋予一个变量啊
    String up = "上升";
    String down = "下降";
    这样代码的难度是不是就下降了呢?
      

  2.   

    ^[\u4e00-\u9fa5]+$  用正则判断是否为中文
      

  3.   

    我的测试代码
    public class TestSimpleExIf
    {
    public static void main(String[] args) 
    {
    Map<String, String> map = new HashMap();
    map.put("x", "54.1");
    map.put("y", "5.0");
    map.put("z", "7.0");
    map.put("d", "2.0");

    String exp = "IIF([[x]]>5,\"上升\"+[[x]],\"下降\"+[[y]])";
    isChinese(exp);

    } public static boolean isChinese(String str) {
     
    String regEx = "[\u4e00-\u9fa5]";
    Pattern pat = Pattern.compile(regEx);
    Matcher matcher = pat.matcher(str);
    boolean flg = false;
    while(matcher.find())
    {
    System.out.println(matcher.group(0));
    }
    return flg; }
      
    }
    结果显示的是:




    而不是我想要的"上升"\"下降",如何才能获得这样的结果啊
      

  4.   

    String regEx = "[\u4e00-\u9fa5]"; 改成 String regEx = "[\u4e00-\u9fa5]+"; 就可以了
      

  5.   

    这是处理regx的例子,regx1,regx2类似
            String reg = "\\),(\\D*)\\d*,(\\D*)\\d*\\)";
            Matcher m = Pattern.compile(reg).matcher(regx);
            if (m.find()) {
             preString = m.group(1);
             suffixString = m.group(2);
            }
      

  6.   

    楼主,老眼昏花,是非不分,爱憎不明
    2楼的正确答案没给人家分。HOHO~拖到黑名单中。。