我有String
个实例包含1548258598784165
等数字。
我想要一个灵活的实用程序来将此字符串格式化为另一个字符串
我的目标是遵循结果(样本):
1548***4165
154-----------65
1548 2585 9878 4165
以上规则是我的格式化原始字符串规则的示例。
我的问题是:我的目标是否有利益效用?我不希望以substring
和类似的方式进行操纵。
答案 0 :(得分:1)
我相信这符合您的要求
public static String customFormat(String in, int i) {
StringBuilder sb = new StringBuilder();
if (in != null) {
char[] arr = in.toCharArray();
switch (i) {
case 1:
for (int t = 0; t < 4; t++) {
sb.append(arr[t]);
}
sb.append("***");
for (int t = arr.length - 4; t < arr.length; t++) {
sb.append(arr[t]);
}
break;
case 2:
for (int t = 0; t < 3; t++) {
sb.append(arr[t]);
}
for (int t = 3; t < arr.length - 2; t++) {
sb.append("-");
}
for (int t = arr.length - 2; t < arr.length; t++) {
sb.append(arr[t]);
}
break;
default:
for (int t = 0; t < arr.length; t++) {
if (t > 0 && t % 4 == 0) {
sb.append(" ");
}
sb.append(arr[t]);
}
}
}
return sb.toString();
}
public static void main(String args[]) throws IOException {
for (int i = 1; i < 4; i++) {
System.out.println(customFormat("1548258598784165", i));
}
}
运行时输出
1548***4165
154-----------65
1548 2585 9878 4165
答案 1 :(得分:1)
如果你想以一种非常优雅的方式编写它,我相信创建一个新类是一个好主意,它将包含一个String和方法,以你想要的方式对该字符串进行操作。 String可以作为参数传递给Class的构造函数(然后在类中是私有的)。
当然,您可以创建一个包含方法的类来处理作为参数传递给方法的String,这可能是一种更通用的方式(因为您可以使用普通的字符串而不仅仅是对象你自己的类型。)
两种情况下的方法都可以基于标准的String类方法。您可以使用inputString.charAt(int index)
从String中访问单个符号,这似乎是满足您大多数需求的简单解决方案。每个方法都可以返回一个新的String,该String使用源字符串中的字符和您希望它包含的其他符号构建。您需要实现的唯一事情是包装String类方法。