我有一个看起来像这样的字符串
The#red#studio#502#4
我需要将它拆分为数组中的 3 个不同的字符串
s[0] = "The red studio"
s[1] = "502"
s[2] = "4"
问题是第一个应该只有单词,第二个和第三个应该只有数字......
我试图玩这个s.split()
方法,但没有运气。
String s= "The#red#studio#502#4";
String[] array = s.split("#(?=[0-9])");
for(String str : array)
{
System.out.println(str.replace('#',' '));
}
输出:
The red studio
502
4
ideone链接。
我决定编辑我的 impl,因为我认为 @Srinivas 更优雅。不过,我将留下其余的答案,因为测试仍然有用。它也传递了@Srinivas 的例子。
package com.sandbox;
import com.google.common.base.Joiner;
import org.apache.commons.lang.StringUtils;
import org.junit.Test;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import static org.junit.Assert.assertEquals;
public class SandboxTest {
@Test
public void testQuestionInput() {
String[] s = makeResult("The#red#studio#502#4");
assertEquals(s[0], "The red studio");
assertEquals(s[1], "502");
assertEquals(s[2], "4");
}
@Test
public void testAdditionalRequirement() {
String[] s = makeResult("The#red#studio#has#more#words#502#4");
assertEquals(s[0], "The red studio has more words");
assertEquals(s[1], "502");
assertEquals(s[2], "4");
}
private String[] makeResult(String input) {
// impl inside
}
}
只需尝试:'String s[]= yourString.split("#")' 它将返回字符串数组....