Java,从字符串中获取一个数字,并将其分配给单独的变量 - Java

时间:2012-11-30 20:24:16

标签: java string int

好的,所以我正在制作一个程序,我想为车牌#(数字和字母)输入一个输入,我想要做的是,把输​​入放在一行,并且能够将输入中的数字和字母分成两个不同的变量,一个是Int和一个String。

public class CarRental {
   public static String model;
   public static String plate;
   public static int platenum;
   public static void main(String[] args){
      Scanner input = new Scanner(System.in);
      System.out.println("Car Model:");
      model = input.nextLine();
      System.out.println("License Plate: ");
      plate = input.nextLine();
        ...

我想将输入中的数字分配给int并将字符保留在字符串板中? 我能做到这一点的方式是什么? 非常感谢任何帮助。

3 个答案:

答案 0 :(得分:2)

您通常使用正则表达式来处理这些类型的事情。看看Java正则表达式(http://docs.oracle.com/javase/tutorial/essential/regex/)

答案 1 :(得分:1)

使用此: How to split a string between letters and digits (or between digits and letters)?

就像这样:

licensePlate = "JGY7433";

licensePlateLetters = licensePlate.split("(?<=\\D)(?=\\d)|(?<=\\d)(?=\\D)")[0];
licensePlateNumber = Integer.parseInt(licensePlate.split("(?<=\\D)(?=\\d)|(?<=\\d)(?=\\D)")[1]);

答案 2 :(得分:0)

以下是使用正则表达式的示例:

String s = "A1B2C3";
List<String> letters = new ArrayList<String>();
List<Integer> numbers = new ArrayList<Integer>();
Pattern pLetters=Pattern.compile("([A-Za-z])"), pNumbers=Pattern.compile("(\\d)");
Matcher mLetters=pLetters.matcher(s), mNumbers=pNumbers.matcher(s);
while (mLetters.find()) { letters.add(mLetters.group(1)); }
while (mNumbers.find()) { numbers.add(Integer.parseInt(mNumbers.group(1))); }
System.out.println("OK: letters=" + letters); // => OK: letters=[A, B, C]
System.out.println("OK: numbers=" + numbers); // => OK: numbers=[1, 2, 3]