如何在Java中将字符串转换为字符串和整数?

时间:2017-06-05 18:18:07

标签: java string

我有以下内容:

  1. 字符串包含5 *;
  2. char opr;
  3. int data;
  4. 我想将5存储在数据中,将*存储在opr

    任何想法怎么做?  因为我知道如果字符串只包含Integer然后我将拆分并解析它但在这种情况下String包含int和char

    输入:

    字符串输入= 5 *;

    我想输出将是这样的:

    this.opr = *

    this.data = 5

4 个答案:

答案 0 :(得分:1)

实现这一目标的简单方法(如果您不想使用 Regex )就是这样做:

String temp ="";
// read every char in the input String
for(char c: input.toCharArray()){
   // if it's a digit
   if(Character.isDigit(c)){
       temp +=c; // append it
   }
   else{ // at the end parse the temp String
        data = Integer.parseInt(temp);
        opr = c;
        break;
   }
}

//test
System.out.println("Input: " + input 
                    + "\t Data: " + data
                    + "\t Opr: " + opr);

<强>测试

Input: 5*    Data: 5     Opr: *
Input: 123*  Data: 123   Opr: *

答案 1 :(得分:0)

在可疑的假设下,问题是以数字形式解析String后跟op,这段代码将达到预期的结果。

public static void main(String[] args)
{
    final String input = "5*";
    int data = -1;
    String op = "";

    Pattern pat = Pattern.compile("([\\d]+)[\\s]*(.*)");

    Matcher m = pat.matcher(input);
    if (m.matches() && m.groupCount() == 2) {
        data = Integer.parseInt(m.group(1));
        op = m.group(2).trim();
    }
    System.out.printf("%2d with op %s%n", data, op);
}

输出:

  

5与op *

答案 2 :(得分:0)

String input = 5*;
char[] splitted = input.toCharArray();
char opr = splitted[1];
int data = Character.getNumericValue(splitted[0]);

答案 3 :(得分:0)

你也可以尝试使用3种不同的输入,如下所示。对于错误的DATA,它将打印0,对于不正确的OPERAND,它将打印为空白。

    String  input       = "5*";
    //String  input       = "109/";
    //String  input       = "109b3*";


    int     data        = 0;
    char    opr         = ' ';
    int     len         = input.length();


    if  (   len > 1 ) {
        String  data_s  = input.substring(0, len - 1);

        try {
                data    = Integer.valueOf(data_s).intValue();
        } catch(Exception e) {
        }

                opr     = input.substring(len - 1). charAt(0);
        if  (   opr    != '+' && opr != '-' && opr != '*' && opr != '/' ) {
                opr     = ' ';
        }
    }


    System.out.println("Input:" + input + " Data:" + data + " Opr:" + opr);