java中使用逗号delimeter分割字符串数组
我有一个字符串数组-->java中使用逗号delimeter分割字符串数组,java,Java,我有一个字符串数组--> string[]arr={“CSE01A”、“ECE02B”、“MECH03C”} 现在我必须打印课程=CSE01、ECE02、MECH03 等级='A','B','C' 我尝试使用逗号分隔符使用split(),但这对字符串数组不起作用 请告诉我如何执行此操作。您不需要拆分,必须将数组元素合并为字符串 String[] arr={"CSE01A","ECE02B","MECH03C"}; StringBuilder coursesBuilder = n
string[]arr={“CSE01A”、“ECE02B”、“MECH03C”}代码>
现在我必须打印课程=CSE01、ECE02、MECH03
等级='A','B','C'
我尝试使用逗号分隔符使用split(),但这对字符串数组不起作用
请告诉我如何执行此操作。您不需要拆分,必须将数组元素合并为字符串
String[] arr={"CSE01A","ECE02B","MECH03C"};
StringBuilder coursesBuilder = new StringBuilder();
StringBuilder gradeBuilder = new StringBuilder();
String[] arr = new String[0];
for (int i = 0; i < arr.length; i++) {
String course = arr[i].substring(0, arr.length - 1);
String grade = arr[i].substring(arr.length - 1);
coursesBuilder.append(course);
gradeBuilder.append("'" + grade + "'");
boolean hasNext = (i + 1) < arr.length;
if (hasNext) {
coursesBuilder.append(", ");
gradeBuilder.append(", ");
}
}
String courses = coursesBuilder.toString();
String grades = gradeBuilder.toString();
String[]arr={“CSE01A”、“ECE02B”、“MECH03C”};
StringBuilder coursesBuilder=新建StringBuilder();
StringBuilder gradeBuilder=新的StringBuilder();
字符串[]arr=新字符串[0];
对于(int i=0;i
split()
是Sting接受字符串并创建数组的方法。如果你想使用它,你应该说str.split(\\s*,\\s*”)
-这对空格是安全的
但您已经有了数组,所以您只想打印它。您可以使用数组。toString(arr)
数组已拆分,它不是字符串。为了进行打印,您需要在元素之间循环:
for ( String courseAndGrade : arr ) {
// split the course and grade:
System.out.println( ... );
}
这是因为您要拆分的内容中没有逗号分隔符
您需要循环遍历数组元素并获取每个字符串的最后一个字符
for (String s : arr) {
int l = s.length();
String course = s.substring(0, l-1);
String grade = s.substring(l-1);
}
完整性:
List<String> courses = new ArrayList<String>();
List<String> grades = new ArrayList<String>();
for (String s : arr) {
int l = s.length();
courses.add(s.substring(0, l-1));
grades.add(s.substring(l-1));
}
System.out.println(StringUtils.join(courses, ", "));
System.out.println(StringUtils.join(grades, ", "));
List courses=new ArrayList();
列表等级=新的ArrayList();
用于(字符串s:arr){
int l=s.长度();
添加(s.子字符串(0,l-1));
添加(s.子串(l-1));
}
System.out.println(StringUtils.join(courses,“,”);
System.out.println(StringUtils.join(grades,“,”);
Java的split()获取一个字符串并将其拆分为一个数组,例如(“abc,def,ghi”)。split(“,”)提供一个带有“abc”,“def”,“ghi”的字符串[]。您需要提取数组中的每个字符串,并拆分最后一个字母(分数)。如果您只想打印出来:
for(String s : arr) {
String course = s.substring(0,s.length()-1);
String grade = s.substring(s.length()-1);
System.out.println("Course: "+course+" Grade: "+grade);
}
您的课程列表不是包含逗号的字符串,因此您不能简单地“拆分”它们。您可以使用如下代码迭代数组:
for(int i=0; i < arr.length; i++){
String packedString = arr[i];
}
String[] arr = {"CSE01A","ECE02B","MECH03C"};
String[] courses = new String[arr.length];
char[] grades = new char[arr.length];
for (int i = 0; i < arr.length; i++) {
courses[i] = arr[i].substring(0, arr[i].length() - 1);
grades[i] = arr[i].charAt(arr[i].length()-1);
}
for(int i=0;i
在循环的每次迭代中,变量packedString将包含您的课程号和成绩(即数组的第一次迭代中的CSE01A)。因此,您只需要应用一种方法来解压缩数据。如果等级总是只有一个字符,那么可以使用子字符串解析出最后一个字符及其前面的所有字符,但是如果有多个字符等级(例如a-),则需要执行更复杂的操作
我不太愿意进一步扩展,因为这听起来像是家庭作业 问题是,您没有为每门课程设置分隔符,课程和成绩在同一个字符串中
既然你知道分数已经到了最后,你可以做一些简单的事情,比如:
for(int i=0; i < arr.length; i++){
String packedString = arr[i];
}
String[] arr = {"CSE01A","ECE02B","MECH03C"};
String[] courses = new String[arr.length];
char[] grades = new char[arr.length];
for (int i = 0; i < arr.length; i++) {
courses[i] = arr[i].substring(0, arr[i].length() - 1);
grades[i] = arr[i].charAt(arr[i].length()-1);
}
String[]arr={“CSE01A”、“ECE02B”、“MECH03C”};
String[]courses=新字符串[arr.length];
字符[]等级=新字符[arr.length];
对于(int i=0;i
最后,您将有一个包含课程的字符串[]和一个包含各自成绩的字符[]。这将遍历您的数组并输出您的课程和成绩:
StringBuilder courses = new StringBuilder();
StringBuilder grades = new StringBuilder();
String delimiter = "";
for (String s : arr) {
courses.append(delimiter).append(s.subSequence(0, s.length() - 1));
grades.append(delimiter).append("'").append(s.substring(s.length() - 1)).append("'");
delimiter = ",";
}
System.out.println("Courses: " + courses.toString()); // prints CSE01,ECE02,MECH03
System.out.println("Grades: " + grades.toString()); // prints 'A','B','C'
您可以使用来帮助简化处理字符串转换和将结果缝合在一起的工作:
package testCode;
import com.google.common.base.Function;
import com.google.common.base.Joiner;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
public class TestMain {
static Joiner joinWithComma = Joiner.on(", ").skipNulls();
private static String getCourses(Iterable<String> fromArray) {
return joinWithComma.join(Iterables.transform(fromArray,
new Function<String, String>() {
@Override
public String apply(String arg0) {
return arg0.substring(0, arg0.length() - 1);
}
}));
}
private static String getGrades(Iterable<String> fromArray) {
return joinWithComma.join(Iterables.transform(fromArray,
new Function<String, String>() {
@Override
public String apply(String arg0) {
return arg0.substring(arg0.length() - 1, arg0.length());
}
}));
}
public static void main(String[] args) {
String[] arr = { "CSE01A", "ECE02B", "MECH03C" };
System.out.println(getCourses(Lists.newArrayList(arr)));
System.out.println(getGrades(Lists.newArrayList(arr)));
}
}
包测试代码;
导入com.google.common.base.Function;
导入com.google.common.base.Joiner;
导入com.google.common.collect.Iterables;
导入com.google.common.collect.list;
公共类TestMain{
静态Joiner joinWithComma=Joiner.on(“,”).skipNulls();
私有静态字符串getCourses(Iterable fromArray){
返回joinWithComma.join(Iterables.transform(fromArray,
新函数(){
@凌驾
公共字符串应用(字符串arg0){
返回arg0.substring(0,arg0.length()-1);
}
}));
}
私有静态字符串getGrades(Iterable fromArray){
返回joinWithComma.join(Iterables.transform(fromArray,
新函数(){
@凌驾
公共字符串应用(字符串arg0){
返回arg0.substring(arg0.length()-1,arg0.length());
}
}));
}
公共静态void main(字符串[]args){
字符串[]arr={“CSE01A”、“ECE02B”、“MECH03C”};
System.out.println(getCourses(list.newArrayList(arr));
System.out.println(getGrades(list.newArrayList(arr));
}
}
输出:
CSE01、ECE02、MECH03
A、 B,C
不过,我有一种感觉,对于迭代数组和字符串操作来说,这可能是一个简单的家庭作业。split()并不像你想象的那样,它接受一个字符串并将其拆分为一个数组。所有这些字符串都遵循相同的模式吗?也就是说,3+个字母,2个数字,1个字母,你想让字符串一直到最后一个字母,最后一个字母在单独的字符串中?你只需要迭代数组的内容。split()拆分字符串本身。输出值中项目之间的逗号是否正确?编辑注意:修订导致答案毫无意义;我回滚了它。Arrays.toString(arr)将打印数组,但它不会提供