JAVAのエラーが解決できません。
?,[,],(,)をreplaceAllを用いて置換したいと下記のようなプログラムを書いたのですが正常に動作しません。
また、Unicodeに置き換えても見たのですが、うまく動作しませんでした。
そして、排出されたエラーは下記の通りです。
文中にある、?などの記号を置換したいのですが何か良い方法は無いでしょうか?
何卒、ご教授、宜しくお願い致します。
テストコード>>>
class Test {
public static void main(String args[]) {
System.out.println(args[0].replaceAll("?", "置換?"));
System.out.println(args[0].replaceAll("[", "置換["));
System.out.println(args[0].replaceAll("(", "置換("));
}
}
エラー>>>
Exception in thread "main" java.util.regex.PatternSyntaxException: Dangling meta character '?' near index 0
?
^ at java.util.regex.Pattern.error(Unknown Source)
at java.util.regex.Pattern.sequence(Unknown Source)
at java.util.regex.Pattern.expr(Unknown Source)
at java.util.regex.Pattern.compile(Unknown Source)
at java.util.regex.Pattern.<init>(Unknown Source)
at java.util.regex.Pattern.compile(Unknown Source)
at java.lang.String.replaceAll(Unknown Source)
at Test.main(Test.java:9)
No.2ベストアンサー
- 回答日時:
とりあえず答えだけ書いてしまいますが
System.out.println(args[0].replaceAll("\\?", "置換?"));
と\\を書けばよいです。
ただしこれはお尋ねの場合だけの話であって
「正規表現」をちゃんと理解しておかないと使えません。
#1の方が言われるようにまずは「正規表現」とは何かを調べてください。
No.3
- 回答日時:
正規表現で使う特別な意味を持つ文字を置き換え元に指定してあるためです。
特別な文字ではなく、普通の文字であることを指示するために、\を付ける必要があります。
ただし、¥は正規表現のエンジンに対して指定しなければいけないので、JAVAのコードでは\\となります。
No.1
- 回答日時:
replaceAllの最初の引数に指定するのは正規表現のパターンです。
正規表現として適切にパース出来ない旨の例外が発生しているのではないでしょうか。
正規表現が何かわからないようでしたらまずそちらを調べてみましょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Java 直し方について教えて頂きたいです。 4 2022/08/13 02:11
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- Java java final 1 2022/06/10 22:49
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- Java java 入力された文字列を数値に置き換えて整数にし、計算をしたいです。 <を10として /を1とし 4 2022/05/16 21:08
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- Java すみません。助けてください。 javaについての質問です。 integerに変換できない数値をエラー 5 2022/05/18 19:16
- Ruby 教えてください 2 2023/01/04 17:50
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CSVファイルを列ごとに読み込む...
-
九九を横に表示する。
-
csv出力について
-
Javaの質問です。テキストファ...
-
yyyymmddからyyyy/mm/d...
-
InputStream.read()でタイムア...
-
BufferedReaderでのエラー
-
戻り値を使用する呼出
-
java シンボルが見つかりません
-
equalsの逆
-
Class.forNameでエラーになる
-
テキストファイルから空白行をよむ
-
getParameterで指定したファイ...
-
Javaの質問です。テキストファ...
-
C言語のポインターに関する警告
-
大量のデータを読み込んで表示...
-
[JAVA]try 内の変数を外で!?
-
ダブルクォーテーションのrepla...
-
ボタンの複数割り当てについて
-
ループ処理の際、最後だけ","を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
yyyymmddからyyyy/mm/d...
-
csv出力について
-
equalsの逆
-
InputStream.read()でタイムア...
-
java連結
-
Javaでデータに登録する度にID...
-
ソケットを使ったサーバとクラ...
-
テキストファイルから空白行をよむ
-
JAVAでエラーがでる。
-
[JAVA]エラーが解決できません。
-
Java int sum = 0は必要ですか?
-
javaのfor文が機能してないみた...
-
Class.forNameでエラーになる
-
九九を横に表示する。
-
Inputstreamについて
-
Javaの質問です。テキストファ...
-
テキストファイルにおいて任意...
-
BufferedReaderでのエラー
-
Java FileDialog に関して
-
以下のJAVAプログラムでご質問...
おすすめ情報