Hi,
diese Funktion funktioniert, aber kann man das auch "besser" lösen?
diese Funktion funktioniert, aber kann man das auch "besser" lösen?
Java:
package sax.test;
import java.util.ArrayList;
import java.util.Arrays;
public class Regex {
/**
* input:
* random string, a-z, random length
* and a pattern "abc" for example
* pattern can be a-y, length min: 3 max: string.length()
* output:
* input string with anything but the pattern replaced with Z
*
* example:
* input: "aaaddd", pattern "ddd", output "ZZZddd"
* input: "adddb", pattern "ad", output "ZZddb"
* input: "ccchhhccc", pattern "hhhc", output: "ZZZhhhcZZ"
* input: "jjjiiikkk", pattern "jjj", output: "jjjZZZZZZ"
*
* @param sax_result
* @return
*/
public static void replaceString2(String input, String pattern) {
System.out.println("input: " + input);
StringBuilder tmp = new StringBuilder();
for (int n=0; n<= input.length()-1; n++) {
tmp.append('Z');
}
System.out.println("tmp: " + tmp);
ArrayList<Integer> positions_of_pattern = new ArrayList<Integer>();
// find all positions of the pattern in string
for (int n=0; n <= input.length()-1-pattern.length()-1; n++) {
int index = input.indexOf(pattern, n);
if (index != -1) {
if (! positions_of_pattern.contains(index)) {
positions_of_pattern.add(index);
}
}
}
System.out.println("position of pattern: " + positions_of_pattern);
char[] tmpCharArray = tmp.toString().toCharArray();
char[] patternCharArray = pattern.toCharArray();
for (int n=0; n<= tmpCharArray.length; n++) {
if (positions_of_pattern.size() >= 1) {
if (n == positions_of_pattern.get(0)) {
for (char x: patternCharArray) {
tmpCharArray[n] = x;
n++;
}
positions_of_pattern.remove(0);
}
}
}
System.out.println("output:");
System.out.println(tmpCharArray);
System.out.println("\n");
}
public static void main(String[] args) {
ArrayList<String> inputStrings = new ArrayList<String>(Arrays.asList( "bdddb", "dddhhh", "aaadddaddd"));
String pattern = "ddd";
for (String x: inputStrings) {
//System.out.println(replaceString(x));
replaceString2(x, pattern);
}
}
}