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