我有一个看起来像这样的字符串
The#red#studio#502#4
我需要将它分成数组中的3个不同的字符串
s[0] = "The red studio"
s[1] = "502"
s[2] = "4"
问题是第一个应该只有单词而第二个和第三个应该只有数字......
我试图使用s.split()
方法,但没有运气。
答案 0 :(得分:9)
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 link。
答案 1 :(得分:1)
我决定编辑我的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
}
}
答案 2 :(得分:0)
只需尝试: 'String s [] = yourString.split(“#”)'它将返回字符串数组....