我是编程新手。
我有这样在java中将字符串分割成多个子字符串
String input="|abc{123{asd|xyz{456{qwe";
我具有与本字符串分割成3份的字符串。
我期待的输出是
string1={"abc","xyz"}
no={"123","456"}
string2={"asd","qwe"}
可有人请帮助我。
我是编程新手。
我有这样在java中将字符串分割成多个子字符串
String input="|abc{123{asd|xyz{456{qwe";
我具有与本字符串分割成3份的字符串。
我期待的输出是
string1={"abc","xyz"}
no={"123","456"}
string2={"asd","qwe"}
可有人请帮助我。
您可以使用以下方法:
substring(int beginIndex, int endIndex) //Returns a new string that is a substring of this string.
(https://docs.oracle.com/javase/7/docs/api/java/lang/String.html)为了将一个字符串分解。
试试这个:
String input = "|abc{123{asd|xyz{456{qwe";
//input length
int length= input.length();
int parts = length/3;
//three substrings
String s1 = input.substring(0, parts);
String s2 = input.substring(parts, 2*parts);
String s3 = input.substring(2*parts, length);
System.out.println("s1: "+s1+"\ns2: "+s2+"\ns3: "+s3);
Output is:
s1: |abc{123
s2: {asd|xyz
s3: {456{qwe
但是我不能使用这个,如果索引是未知的 –
所以你有一个未知长度和内容的字符串,你想分成3部分? –
是的,这是正确的。 –
如果你要使用的代码到你的字符串值截断为三个他人;我会看看这个:Cut Java String at a number of character。本文解释如何截断您的字符串。
如果我们假设,我们应该通过拆分或者{
或|
的字符串,可以拿出类似的像我一样的东西(这不是一个最佳的解决方案,我没有测试过的所有角落的情况,但在这里是)
public static void main(String[] args) {
String input="|abc{123{asd|xyz{456{qwe";
List<String> lettersFirst = new ArrayList<String>();/delimiter/ |
List<String> lettersSec = new ArrayList<String>();// delimiter {
List<String> numbers = new ArrayList<String>();//delimiter either { or |
char[] inputChars = input.toCharArray();
for(int i=1; i<inputChars.length;i++){
if(Character.isLetter(inputChars[i])){
if(inputChars[i-1]=='|')
lettersFirst.add(GetStringUntilDelim(inputChars, i));
else if (inputChars[i-1]=='{')
lettersSec.add(GetStringUntilDelim(inputChars, i));
}else if(Character.isDigit(inputChars[i])){
if(inputChars[i-1]=='|' || inputChars[i-1]=='{')
numbers.add(GetStringUntilDelim(inputChars, i));
}
}
//now format the final strings
String s1 = "{ ", s2 = "{ ", s3 = "{ ";
for(int i=0; i<lettersFirst.size();i++){
s1 = s1 + lettersFirst.get(i);
s1 = s1 + ",";
}
s1 = s1.substring(0,s1.length()-1);//remove the last comma
s1 = s1 +" }";
for(int i=0; i<lettersSec.size();i++){
s2 = s2 + lettersSec.get(i);
s2 = s2 + ",";
}
s2 = s2.substring(0,s2.length()-1);//remove the last comma
s2 = s2 +" }";
for(int i=0; i<numbers.size();i++){
s3 = s3 + numbers.get(i);
s3 = s3 + ",";
}
s3 = s3.substring(0,s3.length()-1);//remove the last comma
s3 = s3 +" }";
System.out.println(s1);
System.out.println(s3);
System.out.println(s2);
}
public static String GetStringUntilDelim(char[] inputChars, int index){
String s = "";
int maxIndex = inputChars.length-1;
char c;
do{
c = inputChars[index++];
s = s + c;
}while(( c != '|' && c != '{') && index <= maxIndex);
s = (index-1) == maxIndex ? s : s.substring(0,s.length()-1);
return s;
}
的输出中是
{ abc,xyz }
{ 123,456 }
{ asd,qwe }
注意,这也将是更有效地使用StringBuilder的字符串连接,而不是字符串。
String in = "|sha{1234{asd|sha1{4564{zxc";
String[] string1, number, string2;
String[] res = in.split("\\|");
string1 = new String[res.length];
number = new String[res.length];
string2 = new String[res.length];
for (int i1 = 1; i1 < res.length; i1++) {
String[] temp = res[i1].split("\\{");
string1[i1] = temp[0];
number[i1] = temp[1];
string2[i1] = temp[2];
}
for (int i = 1; i < string1.length; i++) {
System.out.println(string1[i]);
System.out.println(number[i]);
System.out.println(string2[i]);
}
输出
SHA
ASD
SHA1
ZXC
这是预期的/正确的输出?如果是的话,那么你之前可能会告诉我们,因为这不是任何人从你原来的帖子中猜测出来的。 –
你至少尝试? –
是的,我做到了。我使用split(“\\ |”)将字符串拆分为2.我得到了输出abc {123 {asd和xyz {456 {qwe。 –