Index: /trunk/include/iprt/cpp/ministring.h
===================================================================
--- /trunk/include/iprt/cpp/ministring.h	(revision 68093)
+++ /trunk/include/iprt/cpp/ministring.h	(revision 68094)
@@ -927,4 +927,22 @@
      */
     bool startsWith(const RTCString &that, CaseSensitivity cs = CaseSensitive) const;
+
+    /**
+     * Checks if the string starts with the given word, ignoring leading blanks.
+     *
+     * @param   pszWord The word to test for.
+     * @param   enmCase Case sensitivity selector.
+     * @returns true if match, false if mismatch.
+     */
+    bool startsWithWord(const char *pszWord, CaseSensitivity enmCase = CaseSensitive) const;
+
+    /**
+     * Checks if the string starts with the given word, ignoring leading blanks.
+     *
+     * @param   rThat   Prefix to test for.
+     * @param   enmCase Case sensitivity selector.
+     * @returns true if match, false if mismatch.
+     */
+    bool startsWithWord(const RTCString &rThat, CaseSensitivity enmCase = CaseSensitive) const;
 
     /**
Index: /trunk/src/VBox/Runtime/common/string/ministring.cpp
===================================================================
--- /trunk/src/VBox/Runtime/common/string/ministring.cpp	(revision 68093)
+++ /trunk/src/VBox/Runtime/common/string/ministring.cpp	(revision 68094)
@@ -34,4 +34,5 @@
 #include <iprt/cpp/ministring.h>
 #include <iprt/ctype.h>
+#include <iprt/uni.h>
 
 
@@ -488,4 +489,28 @@
 }
 
+bool RTCString::startsWithWord(const char *pszWord, CaseSensitivity enmCase /*= CaseSensitive*/) const
+{
+    const char *pszSrc  = RTStrStripL(c_str()); /** @todo RTStrStripL doesn't use RTUniCpIsSpace (nbsp) */
+    size_t      cchWord = strlen(pszWord);
+    if (  enmCase == CaseSensitive
+        ? RTStrNCmp(pszSrc, pszWord, cchWord) == 0
+        : RTStrNICmp(pszSrc, pszWord, cchWord) == 0)
+    {
+        if (   pszSrc[cchWord] == '\0'
+            || RT_C_IS_SPACE(pszSrc[cchWord])
+            || RT_C_IS_PUNCT(pszSrc[cchWord]) )
+            return true;
+        RTUNICP uc = RTStrGetCp(&pszSrc[cchWord]);
+        if (RTUniCpIsSpace(uc))
+            return true;
+    }
+    return false;
+}
+
+bool RTCString::startsWithWord(const RTCString &rThat, CaseSensitivity enmCase /*= CaseSensitive*/) const
+{
+    return startsWithWord(rThat.c_str(), enmCase);
+}
+
 bool RTCString::contains(const RTCString &that, CaseSensitivity cs /*= CaseSensitive*/) const
 {
