2

私はこのような文字列を持っています

The#red#studio#502#4

配列内の3つの異なる文字列に分割する必要があります

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

問題は、最初のものには単語のみが含まれ、2 番目と 3 番目には数字のみが含まれている必要があることです...

s.split()メソッドで遊んでみましたが、うまくいきませんでした。

4

3 に答える 3

10
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  

イデオネリンク.

于 2013-01-18T04:11:46.250 に答える
1

@Srinivas のほうがエレガントだと思うので、自分の impl を編集することにしました。テストはまだ有用なので、残りの回答は残しておきます。@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
    }
}
于 2013-01-18T04:04:25.590 に答える
0

単に試してみてください: 'String s[]= yourString.split("#")' 文字列配列が返されます....

于 2013-01-18T04:13:38.833 に答える