在Java中从序列中拆分特定字符

在Java中从序列中拆分特定字符,java,arrays,string,Java,Arrays,String,我有一系列字符串,如下所示(以显示一些示例): 我只想从这些字符串中提取物种数。也就是说,只有“S”字符后面的数字。因此,在拆分字符串(或从中提取?)后,我希望它能够生成: 1 2 2 3 4 1 2 在Java中使用一行或两行就可以做到这一点吗?或者这是一个多步骤的循环序列,一次,然后一次,然后一次,就像我现在做的那样 谢谢大家 这通过了您的测试: package com.sandbox; import org.junit.Test; import static org.j

我有一系列字符串,如下所示(以显示一些示例):

我只想从这些字符串中提取物种数。也就是说,只有“S”字符后面的数字。因此,在拆分字符串(或从中提取?)后,我希望它能够生成:

1 2  
2  
3 4  
1 2 
在Java中使用一行或两行就可以做到这一点吗?或者这是一个多步骤的循环序列,一次,然后一次,然后一次,就像我现在做的那样

谢谢大家

这通过了您的测试:

package com.sandbox;

import org.junit.Test;

import static org.junit.Assert.assertEquals;

public class SandboxTest {


    @Test
    public void testInputEqualsOutput() {
        String input = "S1+2S2\n" +
                "S2\n" +
                "2S3+S4\n" +
                "S1+S2";
        String output = processInput(input);
        assertEquals("1 2\n" +
                "2\n" +
                "3 4\n" +
                "1 2", output);
    }

    private String processInput(String input) {
        return input.replaceAll("\\d?S", "").replaceAll("\\+", " ");
    }

}

processInput
方法将所有前面可能有数字的“S”替换为“”。然后用空格替换所有+符号

您可以使用“S+”作为StringTokenizer的分隔字符串,这样您只需要
S
?@Prince后面的数字。如果你读得清楚的话,这一点在问题中有明确的说明。谢谢@Rohit。“你在读文件吗?”普林斯。我想你把我错当成OP了。请检查一下名字。有一件事可能会失败。你不是在提取需要的东西,而是在删除其他不需要的东西。现在,不需要的部分是你不知道的。因此,对于任何其他与example.IMO中指定的格式不匹配的字符串,您都不会得到正确的结果。您是在批评实现,而不是它的正确性。你怎么知道这很重要?它通过了测试。如果他有另一个输入,并且预期输出失败,我将修改我的测试以通过该测试。这就是我要说的。您需要修改其他字符串的正则表达式。这违背了一般正则表达式的目的。如果他有额外的要求,他应该说出来。就目前而言,这是他所需要的。这太完美了!正是我想要的!我所需要的只是数字!
package com.sandbox;

import org.junit.Test;

import static org.junit.Assert.assertEquals;

public class SandboxTest {


    @Test
    public void testInputEqualsOutput() {
        String input = "S1+2S2\n" +
                "S2\n" +
                "2S3+S4\n" +
                "S1+S2";
        String output = processInput(input);
        assertEquals("1 2\n" +
                "2\n" +
                "3 4\n" +
                "1 2", output);
    }

    private String processInput(String input) {
        return input.replaceAll("\\d?S", "").replaceAll("\\+", " ");
    }

}