昨日も出したのですが自分で作成してみたんですけどヒントをいただいて作成してみたんですけど間をどうしていいかわからないので教えていただきたく載せました。
よろしくお願いいたします。
コメント部分をつくればいいみたいなのですが…
(1)フォルダにファイルを用意する(CSV形式の文字列のファイル)
(2)最初に文字列をキーボードから入力させる(文字列は半角で5文字まで、それ以外ならば繰り返し入力させる)
(3)フォルダのファイル読み込み、(2)で入力した文字列が含まれている単語をファイルに出力(ファイルは新規作成
例:
読込み元ファイル:
river,request,fire,maybe,best,over,coin,confortable,
today,task,mary,face,popular,music,rock,
mark,fight,replay,listen,pop,
-------------------
入力文字列:fi
ファイル出力結果
fire,
fight,
----------------------
入力文字列:re
ファイル出力結果
request,
fire,
replay
public class Kadai4 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO 自動生成されたメソッド・スタブ
String inputString; // ユーザーがキーボードから入力
// ファイルから1行読み込む
String fileString =BufferedReader(FileReader);
StringDetect sDetect = new StringDetect( );// ()の中に入れる
new StringTokenizer( );// ()の中に入れる
if(findMatch(nextToken)){
// ファイルに出す
}
}
public class StringDetect{
private static String inputString = null
// コンストラクタ
public StringDetect(String str){
//ここに入れる
}
public static boolean findMatch(String word){
//wordとinputを比較して部分一致があれば
//true、一致しなければfalseを返す
}
}
}
No.1ベストアンサー
- 回答日時:
魔が差したので作りました。
何か不備があれば自分なりに修正してみてください。
また、これは回答の内容までを保障する記述ではありません。
/**
* execute
*/
public void execute() {
final String loadFile = "c:/data.csv";
final String exportFile = "c:/result.csv";
try {
String keyword = null;
while (true) {
System.out.print("Input a keyword ->");
keyword = this.getWord();
if (this.validate(keyword)) {
break;
}
}
List dataList = this.load(loadFile);
List resultList = new ArrayList();
for (Iterator iterator = dataList.iterator(); iterator.hasNext();) {
String value = (String) iterator.next();
if (this.find(value, keyword)) {
resultList.add(value);
}
}
this.export(exportFile, resultList);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* get a word from keyboard
*/
private String getWord() throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
return reader.readLine();
}
/**
* validate
*/
private boolean validate(String value) throws Exception {
if (value == null) {
return false;
}
Pattern pattern = Pattern.compile("[0-9a-zA-Z]{1,5}");
Matcher matcher = pattern.matcher(value);
return matcher.matches();
}
/**
* find keyword
*/
private boolean find(String value, String keyword) throws Exception {
if (value == null || keyword == null) {
return false;
}
return value.indexOf(keyword) != -1;
}
/**
* load file
*/
private List load(String fileName) throws Exception {
List dataList = new ArrayList();
BufferedReader reader = null;
FileReader fileReader = null;
try {
fileReader = new FileReader(fileName);
reader = new BufferedReader(fileReader);
String line = null;
while ((line = reader.readLine()) != null) {
String[] array = line.split("[,]");
dataList.addAll(Arrays.asList(array));
}
return dataList;
} finally {
if (fileReader != null) {
try {
fileReader.close();
} catch (Exception e) {
}
}
if (reader != null) {
try {
reader.close();
} catch (Exception e) {
}
}
}
}
/**
* export file
*/
private void export(String fileName, List dataList) throws Exception {
BufferedWriter writer = null;
FileWriter fileWriter= null;
final String separator = ",";
try {
StringBuffer buffer = new StringBuffer();
for (Iterator iterator = dataList.iterator(); iterator.hasNext();) {
buffer.append((String) iterator.next());
buffer.append(separator);
}
fileWriter = new FileWriter(fileName);
writer = new BufferedWriter(fileWriter);
writer.write(buffer.toString(), 0, buffer.length() - 1);
writer.flush();
} finally {
if (fileWriter != null) {
try {
fileWriter.close();
} catch (Exception e) {
}
}
if (writer != null) {
try {
writer.close();
} catch (Exception e) {
}
}
}
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 入力ボックスが繰り返しポップアップして止まらない。 下記コードでファイル名の変更をしたいのですが、変 1 2022/09/08 11:27
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Visual Basic(VBA) ファイル名の右側を変更したい ファイル名:「1001日別売上」の左側へ「2022」を追加し、「202 6 2022/10/14 10:03
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Java java 次の機能を有するメソッドを自クラスに作成し、実装したいです。 機能 名前判定機能 →名前が 3 2022/06/16 16:08
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- PHP SQLとPHPの連結方法がわからないのでアドバイスお願い致します 1 2022/07/12 12:16
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ORA-01858: 数値を指定する箇所...
-
配列にnullを代入すると、null...
-
Java配列でNullPointerExceptio...
-
Javascript エラーメッセージが...
-
getStringの値がNULLの時の処理
-
BOOL値を逆にしたい
-
Stringを返す getText()メソッ...
-
C# ListBoxのインデックスの値...
-
eclipseでoracle接続時のエラー...
-
jsp/Servletの動的に増えるフォ...
-
例外でBeanUtils.populateが、...
-
JavaBeansにDBの値を格納
-
JSPでの画面表示の方法
-
javaで質問です。 文字列2023/2...
-
C言語のポインターに関する警告
-
ループ処理の際、最後だけ","を...
-
[JAVA]try 内の変数を外で!?
-
System.err. printlnとSystem.o...
-
JSPやサーブレットでSystem.out...
-
EXCEL VBA で、0から?1から?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ORA-01858: 数値を指定する箇所...
-
配列にnullを代入すると、null...
-
Java配列でNullPointerExceptio...
-
BOOL値を逆にしたい
-
getStringの値がNULLの時の処理
-
C# ListBoxのインデックスの値...
-
eclipseでoracle接続時のエラー...
-
gas カレンダー祭日設定でエラー
-
Javascript エラーメッセージが...
-
java 引数 戻り値のあるメソッド
-
C#でラジオボタンとコンボボッ...
-
MySQLのテーブル名を変数に置い...
-
jsp/Servletの動的に増えるフォ...
-
例外でBeanUtils.populateが、...
-
Stringを返す getText()メソッ...
-
JSPで複数のSQL実行につ...
-
if文を通らない
-
逆コンパイルの見方について(...
-
逆コンパイルの見方について(...
-
この世で連日正規表現について...
おすすめ情報