]> Creatis software - clitk.git/commitdiff
Add findAndReplace
authorDavid Sarrut <david.sarrut@gmail.com>
Fri, 3 Feb 2012 06:57:12 +0000 (07:57 +0100)
committerDavid Sarrut <david.sarrut@creatis.insa-lyon.fr>
Thu, 31 Jan 2013 13:58:13 +0000 (14:58 +0100)
common/clitkCommon.h
common/clitkCommon.txx

index 8f9ce0f0ee20fb8ad45b48f38876fc3d993695c5..8cd82fbe0b0bc1b20f38876368f0d6348615b1a9 100644 (file)
@@ -235,6 +235,11 @@ namespace clitk {
   template <typename M, typename V> 
   void MapToVecSecond(const M & m, V & v);
 
+  //--------------------------------------------------------------------
+  // Find/replace string
+  template<class T>
+  int inline findAndReplace(T& source, const T& find, const T& replace);
+
 #include "clitkCommon.txx"
 
 } // end namespace
index 5ee83bdca8f4f3efc23ae2aa8dc12ad28a2fe36e..845e62fe520deb89def17b26d99c0e3fa7be1c98 100644 (file)
@@ -235,5 +235,22 @@ void MapToVecSecond(const  M & m, V & v) {
 }
 //--------------------------------------------------------------------
 
+
+//--------------------------------------------------------------------
+//http://stackoverflow.com/questions/1494399/how-do-i-search-find-and-replace-in-a-standard-string
+template<class T>
+int inline findAndReplace(T& source, const T& find, const T& replace)
+{
+  int num=0;
+  int fLen = find.size();
+  int rLen = replace.size();
+  for (int pos=0; (pos=source.find(find, pos))!=T::npos; pos+=rLen) {
+    num++;
+    source.replace(pos, fLen, replace);
+  }
+  return num;
+}
+//--------------------------------------------------------------------
+
 #endif /* end #define CLITKCOMMON_TXX */