我以(x,y)的形式输入,其中x和y是整数。例如(10,10)。我需要从输入中解析出整数。这是我的代码:
String dilims = "(,) ";
String[] xy = s.split(dilims);
但是,使用此代码,xy中的标记是“(10)和“ 10””,而不是“ 10”,“ 10”。为什么将“,”和空格识别为定界符,而不能将“(”和“)”识别为分隔符?请指教。
谢谢你,男
split
是不是你想要使用的工具(至少对于这种形式的输入),因为,因为(
在启动它会创建结果数组空字符串,就像"foo".split("f")
创建["", "oo"]
。
无论如何,因为使用split
正则表达式作为参数,所以带有代码
String[] xy = "(10, 10)".split("(,) ");
没有得到10
10
作为结果,但(10
10)
由于"(,) "
表示", "
其中,
被放置在组。因此,您只是在分裂", "
。
如果您想拆就(
OR )
OR ,
OR你需要逃避
(
与)
和使用|
代表OR操作,让你的正则表达式可能看起来像"\\(|\\)|,| "
,但已经提到这个输入是坏主意。
如果您的数据始终是格式形式,请(xxx, yyy)
考虑先删除(
和)
(例如,使用substring
),然后", "
像这样拆分
String dilims = ", ";
String[] xy = s.substring(1,s.length()-1).split(dilims);
您还可以使用Scanner,如果它在开始时找到定界符,则将忽略第一个潜在结果为空字符串的事实,因此对于foo
和定界符来说,f
第一个结果将为oo
。
分隔符也使用正则表达式编写。我们(
)
,
几乎不用角色类就可以轻松地创建一个代表任何一个(空格)的东西。它看起来像
[(), ]
(在字符类内部,(
并且)
失去了特殊的含义,因此我们无需对其进行转义)。但是由于一个接一个的定界符可以再接一个(,
和space
),并且我们不需要将它们之间的空字符串视为结果之一,因此我们需要让定界符接受一个或多个连续字符。我们可以+
用量词来做到这一点。
所以你的代码看起来像
String s = "(10, 10)";
Scanner sc = new Scanner(s);
sc.useDelimiter("[(), ]+");
int x=sc.nextInt();
int y = sc.nextInt();
System.out.println("x="+x);
System.out.println("y="+y);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句