diff --git a/query/plugins/org.eclipse.acceleo.query/src/org/eclipse/acceleo/query/services/StringServices.java b/query/plugins/org.eclipse.acceleo.query/src/org/eclipse/acceleo/query/services/StringServices.java
index 4991cf6..764cdf3 100644
--- a/query/plugins/org.eclipse.acceleo.query/src/org/eclipse/acceleo/query/services/StringServices.java
+++ b/query/plugins/org.eclipse.acceleo.query/src/org/eclipse/acceleo/query/services/StringServices.java
@@ -779,8 +779,8 @@
 	)
 	// @formatter:on
 	public String substituteAll(String self, String r, String t) {
-		return Pattern.compile(nullToEmpty(r), Pattern.LITERAL).matcher(nullToEmpty(self)).replaceAll(
-				Matcher.quoteReplacement(nullToEmpty(t)));
+		return Pattern.compile(nullToEmpty(r), Pattern.LITERAL).matcher(nullToEmpty(self)).replaceAll(Matcher
+				.quoteReplacement(nullToEmpty(t)));
 	}
 
 	// @formatter:off
@@ -856,6 +856,31 @@
 		return segments;
 	}
 
+	// @formatter:off
+	@Documentation(
+		value = "Gets the character at the given index of the given String.",
+		params = {
+			@Param(name = "self", value = "The current String"),
+			@Param(name = "index", value = "The index")
+		},
+		result = "The character at the given index",
+		examples = {
+			@Example(expression = "'cat'.at(2)", result = "'a'")
+		}
+	)
+	// @formatter:on
+	public String at(String str, Integer index) {
+		final String res;
+
+		if (str == null) {
+			res = null;
+		} else {
+			return String.valueOf(str.charAt(index - 1));
+		}
+
+		return res;
+	}
+
 	/**
 	 * Gets the empty {@link String} if the given {@link String} is <code>null</code>.
 	 * 
diff --git a/query/tests/org.eclipse.acceleo.query.tests/src/org/eclipse/acceleo/query/services/tests/StringServicesTest.java b/query/tests/org.eclipse.acceleo.query.tests/src/org/eclipse/acceleo/query/services/tests/StringServicesTest.java
index c210549..98bf9b1 100644
--- a/query/tests/org.eclipse.acceleo.query.tests/src/org/eclipse/acceleo/query/services/tests/StringServicesTest.java
+++ b/query/tests/org.eclipse.acceleo.query.tests/src/org/eclipse/acceleo/query/services/tests/StringServicesTest.java
@@ -1545,4 +1545,19 @@
 		assertEquals("azerty", stringServices.trim("\n\t    \razerty \t\t"));
 	}
 
+	@Test
+	public void atNullNull() {
+		assertEquals(null, stringServices.at(null, null));
+	}
+
+	@Test(expected = StringIndexOutOfBoundsException.class)
+	public void atOutOfBound() {
+		assertEquals(null, stringServices.at("cat", -1));
+	}
+
+	@Test
+	public void at() {
+		assertEquals("a", stringServices.at("cat", 2));
+	}
+
 }
diff --git a/tests/org.eclipse.acceleo.aql.migration.tests.acceleo3/status/TODO b/tests/org.eclipse.acceleo.aql.migration.tests.acceleo3/status/TODO
index e0eeeed..6d2221c 100644
--- a/tests/org.eclipse.acceleo.aql.migration.tests.acceleo3/status/TODO
+++ b/tests/org.eclipse.acceleo.aql.migration.tests.acceleo3/status/TODO
@@ -28,7 +28,6 @@
 Unsupported in A4:
 ==================
 stringServices
-	 at
 	 characters
 	 lineSeparator
 	 oclAsSet
diff --git a/tests/org.eclipse.acceleo.aql.tests/resources/completion/templatePostExpressionAfterDot-expected-completion.txt b/tests/org.eclipse.acceleo.aql.tests/resources/completion/templatePostExpressionAfterDot-expected-completion.txt
index f0297e1..9cab6bf 100644
--- a/tests/org.eclipse.acceleo.aql.tests/resources/completion/templatePostExpressionAfterDot-expected-completion.txt
+++ b/tests/org.eclipse.acceleo.aql.tests/resources/completion/templatePostExpressionAfterDot-expected-completion.txt
@@ -1,4 +1,13 @@
 * Label:
+at()
+* Description:
+at(self: java.lang.String, index: java.lang.Integer) = String<br><br>Gets the character at the given index of the given String.<br><br>  @param self<br>        The current String<br>  @param index<br>        The index<br><br>  @return<br>        The character at the given index<br><br>
+* Text:
+at()
+* Type (optional):
+http://www.eclipse.org/acceleo/4.0#//Expression
+
+* Label:
 concat()
 * Description:
 concat(self: java.lang.String, b: java.lang.String) = String<br><br>Returns a string that is the result of the concatenation of the current string and the string "b".<br><br>  @param self<br>        The current String.<br>  @param b<br>        The String that will be appended at the end of the current String.<br><br>  @return<br>        The concatenated String.<br><br>
