Java 按以下格式将字符串拆分为数组

Java 按以下格式将字符串拆分为数组,java,regex,string,split,Java,Regex,String,Split,以下是输入格式 str = "New 25 \nMy Val 50 \nOld 25 "; String[] words = str.trim().split("\\s+"); for(int i = 0; i <words.length; i++) { System.out.println(words[i]); } 但我的期望是: New 25 My Val 50 Old 25 如果我们假设您的代码str像这样str=My Val 25 New 50 Old 25,那么如何使

以下是输入格式

str = "New 25 \nMy Val 50 \nOld 25 ";
String[] words = str.trim().split("\\s+");
for(int i = 0; i <words.length; i++) {
    System.out.println(words[i]);
}
但我的期望是:

New
25
My Val
50
Old
25

如果我们假设您的代码str像这样str=My Val 25 New 50 Old 25,那么如何使用正则表达式在java中实现这一点; 您的答案的解决方案如下

str = "My Val 25 New 50 Old 25";
String[] words = str.trim().split("\\s+");
for(int i = 0; i <words.length; i++) {
       if(i == 0 ){
         System.out.print(words[i]+" ");
       }
       else{
               System.out.println(words[i]);
       }
}
试试这个-

String str = "My phone 25\nValet 50\niPod 25";

String lines[] = str.split("\\r?\\n");

for(String line : lines){
    int index=line.trim().lastIndexOf(" ");
    String str1 = line.substring(0,index);
    System.out.println(str1);
    String str2 = line.substring(index+1);
    System.out.println(str2);
}

希望这能对你有所帮助:

虽然这个问题模棱两可,但仍在努力理解你的问题并回答。希望它能帮助你

我认为您的字符串是由一些键和相应的数值组成的

如果是这样,那么通过在数字前面的所有空格处拆分字符串,您肯定可以获得所需的输出

[]?=\d将捕获任何数字之前的空间

str = "My phone 25\nValet 50\niPod 25";
String[] words = str.trim().split("[ ](?=\\d)");  // you need to escape '\' using extra '\'
for(int i = 0; i <words.length; i++) {
    System.out.println(words[i]);
}

这是一个纯基于正则表达式的拆分,不需要任何代码级后处理:

String str = "New 25 \nMy Val 50 \nOld 25";
String[] words = str.trim().split("\\R+|\\h+(?=\\d{2})");
for(int i = 0; i <words.length; i++) {
    System.out.println(words[i]);
}

您的输出/所需输出与您提供的输入不匹配。对于给您带来的不便,深表歉意。输入是My Val 25\nNew 50\nOld 25@KarthikSankar用正确的输入编辑您的问题。如果我有像这个新的25\nMy Val 50\nOld 25这样的str,您的代码将无法工作您能解释一下吗\\r\\n@KarthikSankar这是UNIX和Windows的换行符。您能简单解释一下吗?=\d[]用于正好匹配一个空格,而?=\d是检查号码的正向前瞻。总的来说,它会检查任何数字之前的空格。如果我必须检查两位数之前的空格。那么我如何检查[]?=\d{2}\b这将帮助您获得2位数字no之前的空格。我想检查下一个有两位数字的任何水平空格。确实可以吗?您可以使用\\h+?=\\d{2}或查看更新的答案。
My phone
25
Valet
50
iPod
25
String str = "New 25 \nMy Val 50 \nOld 25";
String[] words = str.trim().split("\\R+|\\h+(?=\\d{2})");
for(int i = 0; i <words.length; i++) {
    System.out.println(words[i]);
}
New
25 
My Val
50 
Old
25