No.4ベストアンサー
- 回答日時:
ああ、そういうことでしたか。
それなら、単純なreplaceでは対応できません。
御自身でお書きの通り、splitは単純に分割するもので、ダブルクォートの外とか中とかを考慮しません。
replaceも同様に、外と中を考慮しません。
先にreplaceすれば、splitで分割できなくなるし、先にsplitを先にすれば、ダブルクォートの中のカンマでも分割され、そのあとreplaceしようにもカンマ自体がありません。
ダブルクォートで囲まれた範囲を別に処理する必要があります。
「java csv パーサ」で検索してみてください。
java csv パーサで調べてやってみます。
本来配列以外で、カンマが入る場合は
配列の区切り自体|(バーティカルバー)区切りにしてもらうと
こうした問題がおきなくて管理しやすいのですが…
どうもありがとうございました。
No.3
- 回答日時:
単独で機能しているのならば、どこかで処理が間違っている可能性が大です。
EclipseやNetBeansのようなIDEのデバッグモードを使用したり、
Sysytem.out.println()を埋め込むなりして、想定結果と異なる箇所を特定しましょう。
稀に機能しないなど、偶発的なものなら間違っている箇所を特定することは困難ですが、
ほぼ機能していないならば、最初から最後までの処理を読めばいいだけなので、特定は容易な方です。
この回答への補足
アドバイスどうもありがとうございます。
エラーが出るのは、生データをいじって中身がおかしくなっていたようです。
改めて試したのですが
出力は出来ますが、
while((line = in.readLine()) != null) {
配列line = line.split(",");
で、半角カンマ区切りで読み込んでますので
配列ごとに先に分割されてしまうようですので
リプレイス等で、半角カンマを置換できずに
配列ごとに分割されてしまうようです。
Sysytem.out.println()の実行結果ですと
例 実行前 "あいう,えお" ,かきくけこ
実行後 "あいう
えお"
かきくけこ
のようになってしまいます。
No.2
- 回答日時:
import java.util.regex.*;
class b {
public static void main(String argv[]) {
String c="ab,abc,de";
// 補足にあったコード
String text = new String(c);
Pattern pattern = Pattern.compile(",");
Matcher matcher = pattern.matcher(text);
StringBuffer appStrBuf = new StringBuffer();
while (matcher.find()) {
matcher.appendReplacement(appStrBuf, " ");
}
matcher.appendTail(appStrBuf);
// 単純なreplace
String c0=c.replace(","," ");
String c1=c.replaceAll(","," ");
System.out.println(c);
System.out.println(appStrBuf);
System.out.println(c0);
System.out.println(c1);
}
}
→
ab,abc,de // もとのcは変化しない
ab abc de // appStrBuf
ab abc de // String.replace
ab abc de // String.replaceAll
となりますけど。
この回答への補足
アドバイスどうもありがとうございます。
単体の実行結果で検証すると半角カンマは置換できます。
半角カンマのままですと、反応しないというより
エラーでテキスト入出力出来ません。
テキスト全体のフィールドごとの区切りを
private static String Sign() {
String Verticalbar = "|";
return commaorVerticalbar;}
バーティカルバー区切りにしてもダメです。
全体のプログラムに問題があるのでしょうか。
現状は半角カンマを全角カンマに修正してから
テキスト入出力しています。
もう少し色々試してみます。
No.1
- 回答日時:
具体的にどうやったのですか?
http://docs.oracle.com/javase/jp/6/api/java/lang …
http://docs.oracle.com/javase/jp/6/api/java/lang …
http://docs.oracle.com/javase/jp/6/api/java/lang …
どれでもできそうですけど
この回答への補足
String text = new String(c);
Pattern pattern = Pattern.compile(",");
Matcher matcher = pattern.matcher(text);
StringBuffer appStrBuf = new StringBuffer();
while (matcher.find()) {
matcher.appendReplacement(appStrBuf, " ");
}
matcher.appendTail(appStrBuf);
Systemout.print(appStrBuf);
}
のようにして半角カンマをスペースにしたりとか
単純に c.replaceAll(","," ");のようにして反応がありません。
その他の文字は置換できます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- Excel(エクセル) capeofdragonと申します Excel2016を使っておりまして 半角又は全角の任意文字列が 2 2022/10/31 13:51
- Visual Basic(VBA) Excel VBAでAA(BBB) → BBB.AA に置換したい 2 2022/10/30 13:59
- オープンソース csvデータのダブルクォーテーションで囲まれた文字内にあるカンマを削除したい 3 2022/09/02 15:17
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- その他(プログラミング・Web制作) 2つのテキストファイルを比べて文字列を特定する方法を教えて下さい 5 2022/05/01 15:22
- その他(コンピューター・テクノロジー) 正規表現の置換で一部の文字列をそのまま残したい 2 2022/05/03 19:19
- Visual Basic(VBA) 指定した文字から指定した文字のスペースまでを削除するVBAの構文について 6 2022/07/24 22:20
- Visual Basic(VBA) VBAで、特定の文字より後を削除して残った数値を文字列に変換と特定の文字より前も削除したい 3 2022/04/15 19:21
- Excel(エクセル) PowerQueryに詳しい方教えてください(Office365) 1 2022/07/24 21:11
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JSPやサーブレットでSystem.out...
-
C言語のポインターに関する警告
-
[JAVA]try 内の変数を外で!?
-
JAVA 文字色変更
-
java シンボルが見つかりません...
-
Javaでカレントディレクトリを...
-
JAVAのエラーの意味が分かりま...
-
エクセルマクロ文で、赤文字セ...
-
曜日の取得方法を教えて下さい!
-
Javaのコマンドライン引数を使...
-
改行の判定方法
-
nullcline
-
配列を後ろから数えるには?
-
javaで画像をランダムに表示さ...
-
public final void setTime(Dat...
-
printfの%fにおいて教本どおり...
-
独自クラスをVectorに格納してi...
-
セッションのリセット
-
並行サーバの導入
-
へロンの公式 java
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語のポインターに関する警告
-
[JAVA]try 内の変数を外で!?
-
JSPやサーブレットでSystem.out...
-
JAVAのDouble型の小数点以下の...
-
EclipseでJava
-
「続行するには何かキーを押し...
-
文字列の引き算
-
java シンボルが見つかりません...
-
JAVA 文字色変更
-
改行の判定方法
-
JAVAのエラーの意味が分かりま...
-
Javaのコマンドライン引数を使...
-
曜日の取得方法を教えて下さい!
-
java教えてください。
-
Javaでカレントディレクトリを...
-
JavaにはなぜGO TO ...
-
構文解析中にファイルの終わり...
-
JAVA 三角形の判定
-
複数行キーボード入力した後に...
-
printfの%fにおいて教本どおり...
おすすめ情報