当前位置: 首页 > 知识库问答 >
问题:

如何将扫描仪输入拆分为(数字)(带空格的字符串)(数字)

孙经艺
2023-03-14

简单地说,我目前正在使用的程序要求我分割扫描仪输入(例如:2火腿和奶酪5.5)。它应该读取一份杂货订单,并将其分成三个数组。我应该使用string.split,并能够将此输入拆分为三部分,而不考虑中间字符串中的空格。

示例输入#1:2苹果0.9

示例输出#1:

2个

苹果

0.9

示例输入#2:2更多苹果0.9

示例输出#2:

2个

更多的苹果

0.9

我如何实现这一点?每当我用string.split在哪里有空格的地方分裂,当我只需要它在数字和字符串之间分裂时,它就分裂“更多”和“苹果”。

非常感谢。

共有3个答案

郭浩穰
2023-03-14

很明显,在你的例子中,输入总是这样:量化名称价格,这样你就可以使用string.split,得到第一个和最后一个数字,并用空格T[2]-t[n-1]连接其他字符串

洪飞驰
2023-03-14

您可以尝试。拆分("[^0-9]"),但这将丢弃数字之间的信息。

我想您应该切换到使用匹配器,该匹配器源自模式,如下所示:

Pattern p = Pattern.compile("([0-9.]+)([^0-9]+)([0-9.]+)");
Matcher m = p.matcher("30 apples and pears 0.29");
if (m.matches()) {
   String number = m.group(1);
   String product = m.group(2);
   String price = m.group(3);
   // Continue parsing numbers ...
}
易博文
2023-03-14

试试这个(不言自明):

String str = "2 More Apples 0.9";
int fistSpaceIndex = str.indexOf(" ");
int lastSpaceIndex = str.lastIndexOf(" ");
int quantity = Integer.parseInt(str.substring(0, fistSpaceIndex));
String name = str.substring(fistSpaceIndex, lastSpaceIndex);
Double cost = Double.parseDouble(str.substring(lastSpaceIndex));
System.out.println(quantity + " " + name + " " + cost);

将字符串按空间分割,所以第一个空间之前的所有内容都是数量,最后一个空间之后的所有内容都是成本,而中间的任何内容都是名称。

 类似资料:
  • 我正试图用Java中的扫描器将一个字符串分成另外两个字符串。好像不起作用。我只能通过谷歌找到扫描仪用来读取控制台输入的例子。我从扫描仪的手册中找出了我做事情的方式,我不确定我错了什么。 第一个和第二个是空白的,我不知道为什么。

  • 给我一个字符串“23 45”,我需要得到两个值为23的变量(int a)和值为45的变量(int b)

  • 我创建了一个简单的扫描器,用于计算中的字符串数。txt文件。每个字符串位于下一行。它算错了,每次它给我数字297,甚至有超过20000个字符串。这个txt文件是由我编写的另一个程序创建的,它从网站获取链接,并使用FileWriter和BufferedWriter将其保存到。txt文件。可能有什么问题? 编辑:字符串示例:

  • 问题内容: 欲分割为4的阵列,以利用 这是我的代码: 但是,结果标记是一个空数组:[],而不是 我想要的4数组。 我已经测试过更改一点: 这次的结果标记为。这与我想要的接近,但是我真的不想在拆分之前添加此“ 1”。 问题基本上是,如果它仅包含空元素,它将返回一个空数组。 您能帮助解决问题吗? 问题答案: 您需要使用带有limit参数的重载方法。 从文档(重点是我的): limit参数控制应用图案的

  • 问题内容: 问题答案: 您可以尝试这样的事情: 除非我误解你,否则这似乎是很基本的东西

  • 问题内容: 我正在尝试找到一种将String拆分为String数组的方法,并且每当遇到白色香料时就需要对其进行拆分,例如 “嗨,我是保罗” 进入” “嗨”“我”“保罗” 如何使用RegularExpression在split()方法中表示空格? 问题答案: 您需要一个正则表达式,例如,这意味着: 每当遇到至少一个空格时就进行拆分 。完整的Java代码是: