我有一个字符串数组 - >
string[] arr={"CSE01A","ECE02B","MECH03C"};
现在我必须打印course = CSE01, ECE02,MECH03
和成绩= 'A','B','C'
我尝试使用逗号分隔符来使用split(),但这不适用于字符串数组..
请让我知道如何做到这一点。
答案 0 :(得分:5)
那是因为你要分裂的内容中没有逗号分隔符。
您需要遍历数组元素并获取每个字符串的最后一个字符。
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, ", "));
答案 1 :(得分:2)
Java的split()接受一个String并将其拆分为一个数组,例如(“abc,def,ghi”)。split(“,”)为你提供一个带有“abc”,“def”,“ghi”的String []。您需要取出数组中的每个字符串并将最后一个字母(等级)分开。如果你只想打印出来:
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);
}
答案 2 :(得分:1)
您不需要拆分,必须将数组元素组合成一个字符串。
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();
答案 3 :(得分:0)
split()
是Sting的接受字符串并创建数组的方法。如果你想使用它,你应该说str.split("\\s*,\\s*")
- 这对于空格是安全的。
但是你已经有了数组,所以你只想打印它。您可以使用Arrays.toString(arr)
。
答案 4 :(得分:0)
数组已经拆分,它不是字符串。为了打印,你将遍历元素:
for ( String courseAndGrade : arr ) {
// split the course and grade:
System.out.println( ... );
}
答案 5 :(得分:0)
您的课程列表不是包含逗号的字符串,因此您不能简单地“拆分”它们。您可以使用如下代码迭代数组:
for(int i=0; i < arr.length; i++){
String packedString = arr[i];
}
在循环的每次迭代中,变量packedString将包含您的课程编号和等级(即数组第一次迭代时的CSE01A)。所以你只需要应用一个方法来解压缩数据。如果成绩总是只有一个字符,你可以使用子字符串来解析最后一个字符及其前面的所有内容,但是如果你有多字符等级(例如A-),你需要多做一些事情。复杂。
我犹豫是否进一步扩展,因为这听起来像是家庭作业。
答案 6 :(得分:0)
问题是,你没有每个课程的分隔符,课程和成绩在同一个字符串中。
既然你知道成绩已经结束了,你可以做一些简单的事情:
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 []和一个各自成绩的char []。
答案 7 :(得分:0)
这会迭代你的数组并输出你的课程和成绩:
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'
答案 8 :(得分:0)
您可以使用Guava来帮助简化处理字符串转换的工作并将结果拼接在一起:
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)));
}
}
输出:
CSE01,ECE02,MECH03
A,B,C
但我有一种感觉,在迭代数组和字符串操作时,这可能是一个简单的家庭作业分配。