안녕하세요. 표준 입력에서 큰 따옴표 안에있는 쉼표를 제외하고 모든 쉼표를 세미콜론으로 바꿉니다.사용자 입력 문자열 : 인용 부호로 된 것을 제외하고 쉼표를 세미콜론으로 바꿉니다.
예 : "John, Smith"가 여기 있고, 준비가되어 있습니다.
출력 : "John, Smith"가 있습니다. 유능하고 준비가되어있다. 때때로.
견적 ("John, Smith")의 문자열 부분을 제외하고 .replace (',', ';')를 사용하는 쉬운 방법이 있습니까? 또는 다른 것을 필요로합니까? 좋아
그래서이 시도하고 나는 그것이 좋은 이동라고 생각, 그것은 컴파일하지만 결과는 내가 info.charAt (i)를하면 교체하려고했던 쉼표를
다음import java.util.*;
public class CSVFile{
public static void main(String[]args){
input();
}
public static void input(){
Scanner kb = new Scanner(System.in);
String info;
System.out.println("Enter Data"); //User inputs in CSV File format
info = kb.nextLine();
while (!info.equals("#")){
process(info);
System.out.println("Enter Data");
info = kb.nextLine();
}
System.out.println("End of Program");
}
public static void process (String info){
int sl, i, qCount;
sl = info.length();
qCount = 0;
for (i = 0; i < sl; i++){
if (info.charAt(i)=='"'){
qCount++; //Quotation mark count
}
if (qCount%2 == 0 && info.charAt(i) == ',') //if qCount remainder > 0 and info.charAt (i) == ','
{
info.replace(',',';'); //Replace commas with semicolons
}
}
System.out.println(info+" "+qCount);
}
}
를 대체하지 않습니다 그 쉼표가 있지만 아직 제대로 이해하지 못했습니다. 어떤 제안?
좋아요. 다른 접근 방식을 시도했지만이 예에서는 작동합니다.
public static void process(String info){
StringBuilder str = new StringBuilder(info);
int n = str.length();
int q = 1;
int j = 0;
for (int i = 0; i < n; i++){
if (str.charAt (i) == '"'){
q++;
j = q%2;
}
if (str.charAt (i) == ',' && j > 0){
str.setCharAt(i, ';');
}
}
System.out.println("===================");
System.out.println(str);
System.out.println("===================");
}
누구든지 개선을 제안 할 수 있습니까? 나는 내가 답을 생각해 내는데 얼마나 오랜 시간이 걸렸는지를 알 수 있듯이 예를 들어 더 잘 배우게됩니다. 나는 마치 실제 CSV 파일을 읽는 스캐너로 FileReader를 열었던 것처럼 이것이 어떻게 적용되는지를 알 수 있습니다.