我有一个字符串,看起来像这样分割字符串转换成Java
The#red#studio#502#4
我需要把它分成3个不同的字符串数组中要
s[0] = "The red studio"
s[1] = "502"
s[2] = "4"
的问题是字符串数组第一个应该只有文字,第二个和第三个应该只有数字...
我试图玩s.split()
方法,但没有运气。
我有一个字符串,看起来像这样分割字符串转换成Java
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 link。
你能解释一下这个正则表达式吗?或者至少告诉我们这个词是什么,所以我可以谷歌它。谢谢 –
我知道关键字'Lookahead'和'Lookbehind'。快速搜索给了我[这](http://stackoverflow.com/a/2206432/189608)。基本上,当有一个散列字符并寻找小数点时,我会进行分割,但是我不会对它进行分割,而是仅在'#' – Srinivas
我决定编辑我的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 [] = yourString.split( “#”)',它会返回字符串数组....
你检查出的Javadoc文档string.split()方法... – WeloSefer
您是否尝试了StringTokenizer .http://docs.oracle.com/javase/1.4.2/docs/api/java/util/StringTokenizer.html – SANN3
您需要了解管理输入数据的特定规则。是否_always_'有些#文字#带#字#号#号? –