【发布时间】:2018-04-01 01:28:24
【问题描述】:
我意识到toString方法添加了[],在这种情况下是多个括号,即[[ value ]].
我需要去掉括号,转换成字符串格式,像这样的输出...
a b c
e f g
i h j
当前输出...
[[a], [b], [c]]
[[d], [e], [f]]
[[i], [h], [g]]
尝试:我有一个可迭代的方法,但不确定是否需要将其用于此目的?
private ArrayList<ArrayList<ArrayList<T>>> matrixOne;
public String toString() {
return matrixOne.toString().replace("[","").replace("]","");
}
更新这里是一个有效的可验证代码。获取此输出:
public class Matrix<T> implements Iterable {
private int rows;
private int columns;
private int value;
private ArrayList<ArrayList<ArrayList<T>>> matrixOne;
public Matrix(int rows, int columns) {
this.rows = rows;
this.columns = columns;
matrixOne = new ArrayList<ArrayList<ArrayList<T>>>();
// matrixOne = new ArrayList<ArrayList<Integer>>();
for(int i = 0; i < rows; i++) {
matrixOne.add(new ArrayList<ArrayList<T>>());
for(int j = 0; j < columns; j++) {
matrixOne.get(i).add(new ArrayList<T>());
}
}
}
public void insert(int row, int column, T value) {
matrixOne.get(row).get(column).add( value);
}
// THIS METHOD!
public String toString() {
return matrixOne.toString().replaceAll("\[\[|\]|,|\[|\]\]", "");
}
public Iterator iterator() {
Iterator itr = matrixOne.iterator();
return itr;
}
public static void main(String[] args) {
Matrix<String> nums = new Matrix(3, 3);
nums.insert(0, 0, "a");
nums.insert(0, 1, "b");
nums.insert(0, 2, "c");
//
nums.insert(1, 0, "d");
nums.insert(1, 1, "e");
nums.insert(1, 2, "f");
//
nums.insert(2, 2, "g");
nums.insert(2, 1, "h");
nums.insert(2, 0, "i");
for(Object nm : nums) {
System.out.println(nm.toString());
}
请给点意见?
【问题讨论】:
-
你需要使用replaceAll() 否则它只会替换第一个匹配的字符
-
为什么不直接使用循环打印字符串。
-
发布您的minimal reproducible example 以证明问题。您的输出看起来甚至没有执行您的自定义方法。展示您如何创建和打印数据。一个简单的 replace(...) 对我有用。
-
@StephenC OP 使用的是
replace,而不是replaceAll,所以不是正则表达式。 -
@Austin
replace将替换所有实例:替换 每个 子字符串 ...
标签: java string arraylist collections