Java中字符串分割

5

有人能给我一些建议吗?我有一个Java .jar文件,其中包含一个方法返回一个字符串,如下所示:

integer integer integer block_of_text

这是三个整数,可以是正数或负数,每个整数之间用单个空格分隔,然后在文本块之前有另一个空格,该文本块可以包含任何字符,但不应包含回车符。现在我想我可以为每个初始整数读取一个子字符串,然后一次性读取剩余的文本。
我应该补充说明,无论文本块包含什么内容,都不应该将其拆分。
但有人能提出更好的替代方案吗?
感谢回答者。这让我省去了很多麻烦!

块文本中是否包含换行符?尤其是在Linux/OS X上的'\n'或在Windows上的'\r\n'。我假设是的,因为您说任何字符都可能存在其中。 - pseudoramble
文本块可以包含空格吗? - sgowd
回车和换行符 - 不需要。空格 - 是的。 - Mr Morgan
4个回答

11

您可以使用带有限制的String#split(regex,limit)形式:

String s = "123 456 789 The rest of the string";
String ss[] = s.split(" ", 4);
// ss = {"123", "456", "789", "The rest of the string"};

我不知道可以这样使用split。 - Mr Morgan

7
你可以使用 String.split 方法,以空格作为分隔符,并设置限制参数为4:
String[] result = s.split(" ", 4);

您也可以使用Scanner。这不仅会分割文本,而且还会将整数解析为int。根据您需要将三个整数作为intString,您可能会发现这更方便:
Scanner scanner = new Scanner(s);
int value1 = scanner.nextInt();
int value2 = scanner.nextInt();
int value3 = scanner.nextInt();
scanner.skip(" ");
String text = scanner.nextLine();

看它在线运行:ideone

3

如果你说block_of_text中没有换行符,一种简单的方法是使用Scanner。它是一个工具,可以根据特定的分隔符来分割输入,并将适当的类型返回给你。例如,你可以使用方法hasNextInt()nextInt()来检查输入中是否有整数,并从流中实际获取它。

例如:

Scanner scanner = new Scanner(System.in); // Arg could be a String, another InputStream, etc
int[] values = new int[3];
values[0] = scanner.nextInt();
values[1] = scanner.nextInt();
...
String description = scanner.nextLine();

你可以使用这个方法,直到输入流耗尽,然后根据需要开始使用这些值。
以下是有关如何使用“Scanner”的更多详细信息:如果...不是int类型{

0
最简单的字符串分割方法是使用 split 方法。
String gen = "some texts here";
String spt[] = gen.split(" ");  //This will split the string gen around the spaces and stores them into the given string array


根据您的问题删除整数,从数组索引3开始。
希望这能帮到您。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接