blob: 73674bbafeb2c1543b7ecb031bf44ab0879f47f8 [file] [log] [blame]
/* --COPYRIGHT--,EPL
* Copyright (c) 2008 Texas Instruments and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Texas Instruments - initial implementation
*
* --/COPYRIGHT--*/
#include <afx.h>
#include "StringUtils.h"
namespace StringUtils
{
int split(const CString input, const CString delimiter, CStringArray& results)
{
int prevStart = 0;
int delimSize = delimiter.GetLength();
int inputSize = input.GetLength();
/* stop if either argument is empty */
if((inputSize == 0) || (delimSize == 0)) {
return 0;
}
/* find the first delimiter */
int nextStart = input.Find(delimiter, 0);
/* keep looking for delimiters */
while( nextStart >= prevStart )
{
/* found one, so accumulate up to that delimiter */
int length = nextStart - prevStart;
results.Add(input.Mid(prevStart, length));
/* advance past the delimiter */
prevStart = nextStart + delimSize;
/* and look for the next match */
nextStart = input.Find(delimiter, prevStart);
}
/* add the remainder of the string after the last delimiter */
results.Add(input.Mid(prevStart));
/* return the number of outputs found */
return results.GetSize();
}
void join(const CStringArray& input, const CString delimiter, CString& result)
{
result.Empty();
for (int i = 0; i < input.GetSize(); i++) {
/* if not at the beginning, separate by a delimiter */
if (i != 0) {
result = result + delimiter;
}
/* add the next element */
result = result + input[i];
}
}
}