检查String标记是否包含字符串char和String number值

时间:2014-08-04 11:12:57

标签: java string numbers compare character

1)我需要检查String是否包含String字符的核心方法是什么?

2)在某种程度上如何将String转换为数字然后比较两个数字?喜欢String =" House":1234等于" House":1234但是没有#34; house":123 Priview:

String token ="123"; False
String token = "ā123"; or other characters True utc.

if(isChars(token)){
   Long value = toLong(token);
}

谢谢!

// EDIT  public BigDecimal eval(){

    Stack<BigDecimal> stack = new Stack<BigDecimal>();

    for (String token : getRPN()) {
        if (operators.containsKey(token)) {
            BigDecimal v1 = stack.pop();
            BigDecimal v2 = stack.pop();
            stack.push(operators.get(token).eval(v2, v1));
        } else if (variables.containsKey(token)) {
            stack.push(variables.get(token).round(mc));
        } else if (functions.containsKey(token.toUpperCase())) {
            Function f = functions.get(token.toUpperCase());
            ArrayList<BigDecimal> p = new ArrayList<BigDecimal>(f.getNumParams());
            for (int i = 0; i < f.numParams; i++) {
                p.add(0, stack.pop());
            }
            BigDecimal fResult = f.eval(p);
            stack.push(fResult);
        } else if (isDate(token)) {
            Long date = null;
            try {
                date = SU.sdf.parse(token).getTime();
            } catch (ParseException e) {/* IGNORE! */
            }
            // mylog.pl("LONG DATE : "+new BigDecimal(date, mc));
            stack.push(new BigDecimal(date, mc));
        }//TODO HERE 
        else if (isChar(token)){
            Long cha = toLong(token);
            stack.push(new BigDecimal(cha, mc));
            //TODO ENDS HERE
        }
        else {
            // mylog.pl("Token : "+ token);
            stack.push(new BigDecimal(token, mc));
        }
    }
    return stack.pop().stripTrailingZeros();
}

2 个答案:

答案 0 :(得分:2)

确定字符串是否包含任何字符的另一种方法是来自apache-commons-lang库的不错的类StringUtils

它包含几种分析字符串内容的方法。在您的情况下,您似乎可以使用StringUtils.isAlphanumeric(CharSequence cs)或否定StringUtils.isNumeric(CharSequence cs)的结果。

你的问题的第二部分怎么样,所以我在这里看不到从字符串中提取数字的必要性。您可以使用标准"House":1234方法比较字符串"house":123String.equals()

答案 1 :(得分:1)

Long l;
try{
    l = Long.parseLong(token);
} catch(NumberFormatException e){
    //contains non-numeric character(s)
}

至于“将varchar转换为Long” - 听起来相当不可能,我们没有普遍接受的方式,而且你没有提供。但是,如果我猜对了,你想要的是字符串中的数字而忽略了字符 - 你想要正则表达式。您想要的代码可能如下所示:

if (!StringUtils.isNumeric(token)){
   String stripped = token.replaceAll("\\D","");
   Long l = Long.parseLong(stripped);
}