扫描信件和彩车使用java扫描器
我有一个字符串,它看起来像这样:扫描信件和彩车使用java扫描器
“M 535.71429,742.3622 55.71428,157.14286Ç0,0 165.71429,-117.14286 -55.71428,-157.14286 Z”
我想让java扫描仪输出以下字符串:“m”,“535.71429”,“742.3622”,“55.71428”,“157.14286”,“c”,...
所以所有的东西都用逗号隔开或一个空间,但我有麻烦让它工作。
这是我的代码看起来像:
Scanner scanner = new Scanner(path_string);
scanner.useDelimiter(",||//s");
String s = scanner.next();
if (s.equals("m")){
s = scanner.next();
point[0] = Float.parseFloat(s);
s = scanner.next();
point[1] = Float.parseFloat(s);
....
,但出来的字符串是: “M”, “”, “5”, “3”,...
我认为麻烦与/ /。你必须使用这种模式:
scanner.useDelimiter("(,|\\s)");
正则表达式模式:
abc… Letters
123… Digits
\d Any Digit
\D Any Non-digit character
. Any Character
\. Period
[abc] Only a, b, or c
[^abc] Not a, b, nor c
[a-z] Characters a to z
[0-9] Numbers 0 to 9
\w Any Alphanumeric character
\W Any Non-alphanumeric character
{m} m Repetitions
{m,n} m to n Repetitions
* Zero or more repetitions
+ One or more repetitions
? Optional character
\s Any Whitespace
\S Any Non-whitespace character
^…$ Starts and ends
(…) Capture Group
(a(bc)) Capture Sub-group
(.*) Capture all
(ab|cd) Matches ab or cd
我们使用双\
因为这是特殊符号和|
不
非常感谢! |之间有什么区别?和||? –
@MoritzBurgi如果有帮助,请接受答案 –
'||'在正则表达式中没有特殊含义。我认为正则表达式'(a || b)'寻找一个'a','b'和一个空格字符串(第一个'|'和第二个'|'之间的空格)。 [regex101](https://regex101.com/)用以下消息发出警告:*“在此位置的交流发电机有效地截断了该组,使得此点以外的任何其他标记都无用”*。 –
如果您所要的输出是字符串,Float.parseFloat(s);
对您的问题没有用处。你的数组是浮点数组吗?
因为如果是这样,你不应该得到任何输出,而是一个NumberFormatException
,因为字符串“m”不能被分析成浮点数。
此外,要解决单个值的问题,您可以使用StringBuilder构成您的号码并忽略字母和逗号。应该使用这些字母的特殊用法。
最后,如果不是绝对必要,请使用double而不是float。它非常安全,并且可以将您从一些更多的问题中解救出来!
我想解析一个SVG文件。我alternetly搜索一个字母,然后保存后面的浮点值。我想我需要建立一个检查,如果解析令牌是由字母或数字组成。 –
什么是point [0],point [1]?这是你试图存储输出的地方吗? – ganeshvjy
是的,我想保存浮点值。 –