在Java中从序列中拆分特定字符
我有一系列字符串,如下所示(以显示一些示例): 我只想从这些字符串中提取物种数。也就是说,只有“S”字符后面的数字。因此,在拆分字符串(或从中提取?)后,我希望它能够生成:在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
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("\\+", " ");
}
}