반응형
자바(JAVA) 실습 - 카드번호 마스킹 예시
1. 들어오는 타입은 List이지만 하나의 param만 존재 가정
2. 마스킹 후 새로운 문자열 반환
3. 비어 있는 List가 들어올 수 있음
4. 마스킹 예시 (15자리 ~ 19자리)
ex. 1234567812345678 --> 123456******5678
123456781234567 --> 123456******567
1. StringBuilder, charArray 활용
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
import java.util.ArrayList;
import java.util.List;
public class MaskingTest {
public static Object maskingCard(List<Object> params) {
if (params == null || params.size() == 0) return null;
String str = params.get(0).toString();
StringBuilder builder = new StringBuilder();
char[] chars = str.toCharArray();
for (int i = 0; i < chars.length; i++) {
builder.append(i >= 6 && i < 12 ? "*" : chars[i]);
}
return builder.toString();
}
public static void testNull() {
List<Object> params = new ArrayList<>();
if (maskingCard(params) == null) System.out.println("test null pass.");
else return;
}
public static void testResult() {
List<Object> params = new ArrayList<>();
String testA = "1234567812345678";
String testB = "123456781234567";
String testC = "12345678123456781";
String testD = "123456781234567812";
String testE = "1234567812345678123";
params.add(testA);
if (maskingCard(params).equals("123456******5678")) {
System.out.println("test result A pass.");
} else {
System.out.println("test result A fail.");
return;
}
params.remove(0);
params.add(testB);
if (maskingCard(params).equals("123456******567")) {
System.out.println("test result B pass.");
} else {
System.out.println("test result B fail.");
return;
}
params.remove(0);
params.add(testC);
if (maskingCard(params).equals("123456******56781")) {
System.out.println("test result C pass.");
} else {
System.out.println("test result C fail.");
return;
}
params.remove(0);
params.add(testD);
if (maskingCard(params).equals("123456******567812")) {
System.out.println("test result D pass.");
} else {
System.out.println("test result D fail.");
return;
}
params.remove(0);
params.add(testE);
if (maskingCard(params).equals("123456******5678123")) {
System.out.println("test result E pass.");
} else {
System.out.println("test result E fail.");
return;
}
params.remove(0);
return;
}
public static void testMasking() {
testNull();
testResult();
System.out.println("All tests pass.");
}
public static void main(String[] args) {
testMasking();
}
}
|
cs |
2. substring 활용
1
2
3
4
5
6
7
8
9
10
|
public static Object maskingCard(List<Object> params) {
if (params == null || params.size() == 0) return null;
String str = params.get(0).toString();
int len = str.length();
String frontStr = strParam.substring(0, 6);
String backStr = strParam.substring(12, len);
String result = frontStr + "******" + backStr;
return result;
}
|
cs |
반응형
'JAVA 자바 > JAVA 실습' 카테고리의 다른 글
[JAVA 실습 #5] TCP 전문 통신 (fixed length) - 전문 헤더 읽기 readInt, writeInt 활용 (1) (0) | 2021.02.07 |
---|---|
[JAVA 실습 #4] WAR파일 실행시 IPv4 사용 설정 (0) | 2020.12.20 |
[JAVA 실습 #3] http통신, REST API 호출, json 데이터 처리 - StringBuilder, BufferedReader 활용 (0) | 2020.12.05 |
[JAVA 실습 #3] http통신, REST API 호출, json 데이터 처리 (0) | 2020.11.30 |
[JAVA 실습 #2] TCP Echo Server/Client - 전문 통신 (fixed length) - 전문 길이(byte) 읽기 (0) | 2020.10.25 |