diff --git a/Framework/Kernel/inc/MantidKernel/Strings.h b/Framework/Kernel/inc/MantidKernel/Strings.h
index c25114da39e21e02bb33c43154a5e20cab1994c9..e1f9f2d8738f111c7b65937538bb23ed8d3a1214 100644
--- a/Framework/Kernel/inc/MantidKernel/Strings.h
+++ b/Framework/Kernel/inc/MantidKernel/Strings.h
@@ -144,7 +144,7 @@ template <typename T> int sectionMCNPX(std::string &A, T &out);
 MANTID_KERNEL_DLL void writeMCNPX(const std::string &Line, std::ostream &OX);
 
 /// Split tring into spc deliminated components
-MANTID_KERNEL_DLL std::vector<std::string> StrParts(std::string Ln);
+MANTID_KERNEL_DLL std::vector<std::string> StrParts(const std::string &Ln);
 
 /// Splits a string into key value pairs
 MANTID_KERNEL_DLL std::map<std::string, std::string>
diff --git a/Framework/Kernel/src/Strings.cpp b/Framework/Kernel/src/Strings.cpp
index 94977a619b58830b36ac6c81eab493de5e900873..ae7dd875e87be760c4535f0b53c9cad3a3410a2f 100644
--- a/Framework/Kernel/src/Strings.cpp
+++ b/Framework/Kernel/src/Strings.cpp
@@ -412,11 +412,10 @@ void writeMCNPX(const std::string &Line, std::ostream &OX) {
  *  @return vector of components
  */
 std::vector<std::string> StrParts(const std::string &Ln) {
-  std::vector<std::string> Out;
-  std::string Part;
-  while (section(Ln, Part))
-    Out.push_back(Part);
-  return Out;
+  auto tokenizer = Mantid::Kernel::StringTokenizer(
+      Ln, " ", Mantid::Kernel::StringTokenizer::TOK_TRIM |
+                   Mantid::Kernel::StringTokenizer::TOK_IGNORE_EMPTY);
+  return tokenizer.asVector();
 }
 
 /**