【问题标题】:Splitting up a string in Java在Java中拆分字符串
【发布时间】:2012-03-21 21:33:39
【问题描述】:

任何人都可以就一直困扰我的问题提出建议吗?我有一个 Java .jar 文件,它从如下组成的方法返回一个字符串:

integer integer integer block_of_text

这是三个整数,可以是正数也可以是负数,每个整数之间用一个空格分隔,然后是一个文本块之前的另一个空格,该文本块可以由任何字符组成,但不应包含回车符。现在我想我可以为每个初始整数读取一个直到空格字符的子字符串,然后一次简单地读取剩余的文本。

我应该补充一点,无论文本块包含什么,都不能分解它。

但是谁能提出更好的选择?

感谢受访者。这让我头疼了!

【问题讨论】:

  • block_of_text 可以包含换行符吗?更具体地说,Linux/OS X 上的 '\n' 或 Windows 上的 '\r\n'。我认为是的,因为您说那里可能存在任何字符。
  • 文本块可能包含空格?
  • 回车和换行 - 没有。空格 - 是的。

标签: java string substring


【解决方案1】:

您可以使用String#split(regex,limit) which takes a 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"};

【讨论】:

  • 我不知道像这样使用拆分。
【解决方案2】:

您可以使用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的详细信息:If ... is not an int {

    【讨论】:

      【解决方案4】:

      拆分字符串最简单的方法是使用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 开始数组索引。
      我希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 2015-03-30
        • 2013-02-07
        • 1970-01-01
        • 1970-01-01
        • 2014-05-27
        • 1970-01-01
        相关资源
        最近更新 更多