如何拆分此字符串(Java)?

如何拆分此字符串(Java)?,java,string,split,Java,String,Split,我想拆分字符串String line=“20E WED 01PM 0E”这样我就有了每个“部分”的变量,其中的部分看起来像: int fDegree = 20; String fDegreeEW = "E"; String day = "WED"; int time = 01; \\ '1' is fine too String amPm = "PM"; int sDegree = 0; String sDegreeEW = "E"; 我想先在空格处拆分字符串行,然后在每个部分上执行reg

我想拆分字符串
String line=“20E WED 01PM 0E”这样我就有了每个“部分”的变量,其中的部分看起来像:

int fDegree = 20;
String fDegreeEW = "E";
String day = "WED";
int time = 01;   \\ '1' is fine too
String amPm = "PM";
int sDegree = 0;
String sDegreeEW = "E";
我想先在空格处拆分字符串
,然后在每个部分上执行
regex
,以获取数据,但我无法实现这一点。将这样的字符串拆分为一组不同变量的最好方法是什么?注意:这不是我要检查的唯一字符串。例如,第一个“20”也可以是“1”或“165”,因此单词和数字不一定有固定的长度。但是数字、单词、空格、单词、空格、数字、单词、空格、数字、单词的模式总是正确的

编辑:我试过:

String line = "20E WED 01PM 0E";
String[] splitArray = line.split(" ");
Scanner scanner = new Scanner(splitArray[0]);
int fDegree = scanner.nextInt();

但这引发了一个
输入不匹配异常。我能在这里用扫描仪吗?你不能那样用扫描仪。扫描仪通常用于让用户向系统输入值。如果要打印所有值,我建议:

String line = "20E WED 01PM 0E";
String[] splitted = line.split(" ");
for(int i = 0; i < splitted.length(); i++){
System.out.println(splitted[i]);
}
String line=“20E WED 01PM 0E”;
String[]splitted=line.split(“”);
对于(int i=0;i
此正则表达式将执行以下操作:

(\d+)(\w+)\s+(\w+)\s+(\d+)(\w+)\s+(\d+)(\w+)
请参阅(查看右侧的“匹配信息”窗格)

以下是如何编写代码:

Pattern p=Pattern.compile(“(\\d+)(\\w+)\\s+(\\w+)\\s+(\\d+)(\\w+)\\s+(\\d+)”;
字符串行=“20E WED 01PM 0E”;
匹配器m=p.匹配器(线);
如果(!m.matches())
抛出新的IllegalArgumentException(“错误输入:+行”);
int-fDegree=Integer.parseInt(m.group(1));
字符串fdegreew=m.group(2);
串日=m组(3);
int-time=Integer.parseInt(m.group(4));
字符串amPm=m.group(5);
intsdegree=Integer.parseInt(m.group(6));
字符串sdegreew=m.group(7);

模式变量<代码> p>代码>可以对每一行重复使用。

关于Scanner的乔尼是正确的,但是你也应该考虑数据是如何输入的。如果给模式一个设定的长度,分割这些信息会容易得多

例如,如果您将行输入为“020 E WED 13 000 E”,那么您所需要做的就是基于标记“”(空格)进行拆分。然后你会得到一个三位数的度数,你的主方向,一天,24小时时钟(13)下午1点,另一个三位数的度数(我假设你永远不会超过360度)和另一个主方向


如果需要将此信息保存在数据结构(如数组)中以备以后使用,可以先使用line.split()或StringTokenizer。

使用空格分隔符进行拆分。然后使用正则表达式将每个子字符串分隔为数字和字母。不要使用扫描仪,试试这个:没有人会为你写代码。如果您有一个不起作用的代码,您可以将其发布到此处,以便人们指出它不起作用的原因。@rgamber why
split()
(使用正则表达式),然后在单个正则表达式可以完成整个工作时,对每个部分进行正则表达式?同意!我的评论是匆忙写的!我无法编辑我的评论,似乎太晚了。谢谢你的批改!也可以使用
System.out.println(Arrays.toString(splitted))。绝对正确。但我这样做可以很容易地让对方知道如何处理for循环中的每个值