将字符串拆分为字符串数组Java

时间:2013-01-18 03:45:56

标签: java regex arrays string split

我有一个看起来像这样的字符串

The#red#studio#502#4

我需要将它分成数组中的3个不同的字符串

s[0] = "The red studio"
s[1] = "502"
s[2] = "4"

问题是第一个应该只有单词而第二个和第三个应该只有数字......

我试图使用s.split()方法,但没有运气。

3 个答案:

答案 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(“#”)'它将返回字符串数组....