개발자들 이야기하는 카톡 오픈 채팅방에 들어 갔는데
좋은 이야기가 많이 오고 가서 내용 긁어서 저장하기도 할겸
카톡 내보내기로 txt파일 열었는데
카카오톡 대화창 내보내기해서 얻은 txt파일의 날짜부분 지워서 새로운 txt파일에 써주는 코드
맨처음에는 ****년 **월 **일 HH:MM뭐 이런 특정 문자열 패턴을 찾아주는 함수나 코드가 있나해서 구글 뒤적거렸는데 그나마 문자열 패턴 찾아주는 것이 숫자/영어 소문자/영어대문자.. 이런 기본적인 패턴밖에 못읽어냄.. 어떻게 해야 되나 싶었는데
txt파일을 readLine()함수로 한 문장씩 가져온 후에 그 문장의 가장 맨 처음에 나오는 쉼표 찾으면 되는거였음..
(ㄴㄴ.. split(", ")를 이용해서 날짜를 포함한 시간과 뒤에 내용을 쪼개주는 식으로 최종적으로 해결함)
그 쉼표 index찾아내서 0번 index에서 찾은 index까지 ""로 replace해줌
java.lang.StringIndexOutOfBoundsException 생김..
(이게 진짜 드럽게 많이 생김.. 솔직히 변수가 채팅내용밖에 없기 때문에 이거 때문에 index관련 함수 그냥 싹 다 버렸음
채팅 내용 진짜 변수 너무 많음 절대 일일히 예외 못찾아줌)
이런 문장 때문임
->[이렇게 해결했습니다! 뭔가 비효율적인거 같지만 저도 더 이상 생각나진않네요,] comma뒤에 아무 문자도 없어서 indexOutOfBounds 생기는 것임
결국 함수 실컷 만들어놓고 둘다 안 씀..
문자열 split이나 stringTokenizer로 쪼개는 문제 같은 경우는 그냥
처음에 parameter값인 정규표현식이나 특정문자를 제대로 하는 것이 무엇보다 중요함..
시작이 한 80~90%되는 것 같음. 멍청하게 시작하면 시작부터 끝까지 삽질 예약이라 개고생하는거임 진짜..
시작을 이상하게 하니까 삽질한 시간이 매우 큼..
처음에는 comma의 index로 찾고.. 또 colon이 여러 개로 들어가니까 따로 몇번째 콜론인지 또 찾고.. 어리석었음
코드는 드럽게 못짰음..
함수 만든거 그냥 무쓸모 되니까 짜증나서
일단 실행만 되면 마무리하기로 타협함
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
package first;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Solution {
private static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
private static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
public static void main(String[] args) throws IOException{
try{
//파일 객체 생성
File file = new File("C:\\Users\\Donald.Lee\\Downloads\\기본적인걸 알아야지 구글링이 가능하니깐.txt");
File fileModified = new File("C:\\Users\\Donald.Lee\\Downloads\\write.txt");
//입력 버퍼 생성
BufferedReader bufReader = new BufferedReader(new FileReader(file));
BufferedWriter bufWriter = new BufferedWriter(new FileWriter(fileModified));
String line = "";
while((line = bufReader.readLine()) != null){
String[] lineSpltWithComma = line.split(", ");
if(lineSpltWithComma.length>=2) {
String[] lineSpltWithColon = lineSpltWithComma[1].split(" : ");
bufWriter.newLine();
bufWriter.write(lineSpltWithColon[0]);
bufWriter.newLine();
if(lineSpltWithColon.length>=2) {
bufWriter.write("\t"+lineSpltWithColon[1]);
}
}
else {
bufWriter.write("\t"+lineSpltWithComma[0]);
}
bufWriter.newLine();
/*String[] lineSplitSpace = line.split(" ");
String[] lineSplitColon = line.split(" : ");
if(lineSplitSpace.length>=7
&& (lineSplitSpace[3].equals("오전") ||
lineSplitSpace[3].equals("오후"))
){
if(lineSplitSpace[5].equals("Bocho")) {
bufWriter.write("★"+lineSplitSpace[5] +"★");
}
else {
bufWriter.write(lineSplitSpace[5]);
}
bufWriter.newLine();
bufWriter.write("\t"+line.substring(findFirstIndex(line, ':')));
}
else {
bufWriter.write("\t"+line);
}
bufWriter.newLine();*/
/*int commaIndex = findFirstIndex(line, ',');
if(commaIndex<0) {
bufWriter.write("\t"+line);
}
else {
bufWriter.write(line.substring(commaIndex+1) );
}
bufWriter.newLine();*/
}
//.readLine()은 끝에 개행문자를 읽지 않는다.
bufReader.close();
bufWriter.close();
}catch (FileNotFoundException e) {
// TODO: handle exception
}catch(IOException e){
System.out.println(e);
}
}
public static int findFirstIndex(String input, int ch) {
return input.indexOf(ch, 0);
}
public static int findWhichIndex(String input, int ch, int whichNum) {
int fromIndex = -1;
int currentOrder = 0;
while(true) {
if(currentOrder==whichNum) {
return fromIndex;
}
else if(fromIndex+1>=input.length()) {
return -1;
}
else {
fromIndex = input.indexOf(ch,fromIndex+1);
currentOrder++;
}
}
}
}
|
cs |
'Coding existing for' 카테고리의 다른 글
카톡 txt파일 정렬 프로그램(모바일 카카오톡에서 내보내기한 txt파일 기준) (2) | 2021.07.31 |
---|---|
입력된 string을 임의로 수정하여 clipboard에 올려주는 코드 (0) | 2021.07.05 |