diff --git a/src/main/java/AsciiStringFilter.java b/src/main/java/AsciiStringFilter.java
new file mode 100644
index 0000000000000000000000000000000000000000..57b3ae7464fd22aaa577798aeb9b44d00c01333b
--- /dev/null
+++ b/src/main/java/AsciiStringFilter.java
@@ -0,0 +1,13 @@
+public class AsciiStringFilter implements StringFilter {
+
+    @Override
+    public String filter(String string) {
+        StringBuilder sb = new StringBuilder();
+        for (char c : string.toCharArray()) {
+            if ((int) c < 128) {
+                sb.append(c);
+            }
+        }
+        return sb.toString();
+    }
+}
diff --git a/src/main/java/CompositeStringFilter.java b/src/main/java/CompositeStringFilter.java
new file mode 100644
index 0000000000000000000000000000000000000000..af171e4fa9aff1ebbc3bbc7e4796a7befc094a3a
--- /dev/null
+++ b/src/main/java/CompositeStringFilter.java
@@ -0,0 +1,17 @@
+public class CompositeStringFilter implements StringFilter {
+
+    private StringFilter[] filters;
+
+    public CompositeStringFilter(StringFilter... filters) {
+        this.filters = filters;
+    }
+
+    @Override
+    public String filter(String string) {
+        String result = string;
+        for (StringFilter filter : filters) {
+            result = filter.filter(result);
+        }
+        return result;
+    }
+}
diff --git a/src/main/java/LowerCaseStringFilter.java b/src/main/java/LowerCaseStringFilter.java
new file mode 100644
index 0000000000000000000000000000000000000000..ce0133611ef569b4293e6f3556620fe8b68c960d
--- /dev/null
+++ b/src/main/java/LowerCaseStringFilter.java
@@ -0,0 +1,7 @@
+public class LowerCaseStringFilter implements StringFilter {
+
+    @Override
+    public String filter(String string) {
+        return string.toLowerCase();
+    }
+}
diff --git a/src/main/java/PostfixStringFilter.java b/src/main/java/PostfixStringFilter.java
new file mode 100644
index 0000000000000000000000000000000000000000..1c51f015dde871a6487ecc0b5824cbd6091c839e
--- /dev/null
+++ b/src/main/java/PostfixStringFilter.java
@@ -0,0 +1,13 @@
+public class PostfixStringFilter implements StringFilter {
+
+    private int n;
+
+    public PostfixStringFilter(int n) {
+        this.n = n;
+    }
+
+    @Override
+    public String filter(String string) {
+        return string.length() > n ? string.substring(string.length() - n) : string;
+    }
+}
diff --git a/src/main/java/PrefixStringFilter.java b/src/main/java/PrefixStringFilter.java
new file mode 100644
index 0000000000000000000000000000000000000000..6495ec86e63eabc39ebb0350a23daeb17af97539
--- /dev/null
+++ b/src/main/java/PrefixStringFilter.java
@@ -0,0 +1,13 @@
+public class PrefixStringFilter implements StringFilter {
+
+    private int n;
+
+    public PrefixStringFilter(int n) {
+        this.n = n;
+    }
+
+    @Override
+    public String filter(String string) {
+        return string.length() > n ? string.substring(0, n) : string;
+    }
+}
diff --git a/src/main/java/StringFilter.java b/src/main/java/StringFilter.java
new file mode 100644
index 0000000000000000000000000000000000000000..cf2fd35638121c0c20e4255b9042734235299c28
--- /dev/null
+++ b/src/main/java/StringFilter.java
@@ -0,0 +1,3 @@
+public interface StringFilter {
+    String filter(String string);
+}
diff --git a/src/main/java/StringFilterUtils.java b/src/main/java/StringFilterUtils.java
new file mode 100644
index 0000000000000000000000000000000000000000..2e170942e05ec0946cefd4e46281eadac6191a78
--- /dev/null
+++ b/src/main/java/StringFilterUtils.java
@@ -0,0 +1,10 @@
+public class StringFilterUtils {
+
+    public static String[] filter(String[] strings, StringFilter filter) {
+        String[] result = new String[strings.length];
+        for (int i = 0; i < strings.length; i++) {
+            result[i] = filter.filter(strings[i]);
+        }
+        return result;
+    }
+}
diff --git a/src/main/java/UpperCaseStringFilter.java b/src/main/java/UpperCaseStringFilter.java
new file mode 100644
index 0000000000000000000000000000000000000000..621b2b7762a23a38e843e98f454ba25bbd0c6983
--- /dev/null
+++ b/src/main/java/UpperCaseStringFilter.java
@@ -0,0 +1,7 @@
+public class UpperCaseStringFilter implements StringFilter {
+
+    @Override
+    public String filter(String string) {
+        return string.toUpperCase();
+    }
+}