私の現在の試みについては、これを参照してください: http://regexr.com?374vg
キャプチャしたいものをキャプチャする正規表現があります。問題は、String().replaceAll("regex", ".")
すべてを 1 つだけに置き換えること.
です。これは、行末にある場合は問題ありませんが、それ以外の場合は機能しません。
.
マッチのすべての文字をドットに置き換えて、その長さと同じ量のシンボルを取得するにはどうすればよいですか?
私の現在の試みについては、これを参照してください: http://regexr.com?374vg
キャプチャしたいものをキャプチャする正規表現があります。問題は、String().replaceAll("regex", ".")
すべてを 1 つだけに置き換えること.
です。これは、行末にある場合は問題ありませんが、それ以外の場合は機能しません。
.
マッチのすべての文字をドットに置き換えて、その長さと同じ量のシンボルを取得するにはどうすればよいですか?
1行のソリューションは次のとおりです。
str = str.replaceAll("(?<=COG-\\d{0,99})\\d", ".").replaceAll("COG-(?=\\.+)", "....");
ここにいくつかのテストコードがあります:
String str = "foo bar COG-2134 baz";
str = str.replaceAll("(?<=COG-\\d{0,99})\\d", ".").replaceAll("COG-(?=\\.+)", "....");
System.out.println(str);
出力:
foo bar ........ baz
これは、String#replaceAll を使用して行うことはできません。Pattern.compile(regexp) を使用して、次のように一致を繰り返すことができる場合があります。
StringBuilder result = new StringBuilder();
Pattern pattern = Pattern.compile(regexp);
Matcher matcher = pattern.matcher(inputString);
int previous = 0;
while (matcher.find()) {
result.append(inputString.substring(previous, matcher.start()));
result.append(buildStringWithDots(matcher.end() - matcher.start()));
previous = matcher.end();
}
result.append(inputString.substring(previous, inputString.length()));
これを使用するには、ドットbuildStringWithDots(int length)
を含む文字列を作成するように定義する必要があります。length
個人的には、私はあなたの人生を簡素化し、このようなことをしたいと思います (初心者向け)。終わりにさせてもらいます。
public class Test {
public static void main(String[] args) {
String cog = "COG-19708";
for (int i = cog.indexOf("COG-"); i < cog.length(); i++) {
System.out.println(cog.substring(i,i+1));
// build new string
}
}
}
次のコードを検討してください。
Pattern p = Pattern.compile("COG-([0-9]+)");
Matcher mt = p.matcher("Fixed. Added ''Show annualized values' chackbox in EF Comp Report. Also fixed the problem with the missing dots for the positions and the problem, described in COG-18613");
if (mt.find()) {
char[] array = new char[mt.group().length()];
Arrays.fill(array, '.');
System.out.println( " <=> " + mt.replaceAll(new String(array)));
}
出力:
Fixed. Added ''Show annualized values' chackbox in EF Comp Report. Also fixed the problem with the missing dots for the positions and the problem, described in .........