From a7eef89a75cace6c6e7652a5bae9f580a2de581c Mon Sep 17 00:00:00 2001 From: mdb Date: Wed, 30 Jan 2002 18:11:27 +0000 Subject: [PATCH] Added StringUtil.joinEscaped() and a unit test for said. git-svn-id: https://samskivert.googlecode.com/svn/trunk@549 6335cc39-0255-0410-8fd6-9bcaacd3b74c --- .../java/com/samskivert/util/StringUtil.java | 21 +++++++- .../com/samskivert/util/StringUtilTest.java | 52 +++++++++++++++++++ 2 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 projects/samskivert/tests/src/java/com/samskivert/util/StringUtilTest.java diff --git a/projects/samskivert/src/java/com/samskivert/util/StringUtil.java b/projects/samskivert/src/java/com/samskivert/util/StringUtil.java index e8de6432..8ed19e21 100644 --- a/projects/samskivert/src/java/com/samskivert/util/StringUtil.java +++ b/projects/samskivert/src/java/com/samskivert/util/StringUtil.java @@ -1,5 +1,5 @@ // -// $Id: StringUtil.java,v 1.18 2002/01/22 15:46:56 shaper Exp $ +// $Id: StringUtil.java,v 1.19 2002/01/30 18:11:27 mdb Exp $ // // samskivert library - useful routines for java programs // Copyright (C) 2001 Michael Bayne @@ -351,6 +351,25 @@ public class StringUtil return vals; } + /** + * Joins an array of strings into a single string, separated by + * commas, and escaping commas that occur in the individual string + * values such that a subsequent call to {@link #parseStringArray} + * would recreated the string array properly. + */ + public static String joinEscaped (String[] values) + { + StringBuffer buf = new StringBuffer(); + int vlength = values.length; + for (int i = 0; i < vlength; i++) { + if (i > 0) { + buf.append(", "); + } + buf.append(replace(values[i], ",", ",,")); + } + return buf.toString(); + } + /** * Splits the supplied string into components based on the specified * separator character. diff --git a/projects/samskivert/tests/src/java/com/samskivert/util/StringUtilTest.java b/projects/samskivert/tests/src/java/com/samskivert/util/StringUtilTest.java new file mode 100644 index 00000000..53ef902d --- /dev/null +++ b/projects/samskivert/tests/src/java/com/samskivert/util/StringUtilTest.java @@ -0,0 +1,52 @@ +// +// $Id: StringUtilTest.java,v 1.1 2002/01/30 18:11:27 mdb Exp $ +// +// samskivert library - useful routines for java programs +// Copyright (C) 2001 Michael Bayne +// +// This library is free software; you can redistribute it and/or modify it +// under the terms of the GNU Lesser General Public License as published +// by the Free Software Foundation; either version 2.1 of the License, or +// (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +package com.samskivert.util; + +import junit.framework.Test; +import junit.framework.TestCase; + +import com.samskivert.Log; + +public class StringUtilTest extends TestCase +{ + public StringUtilTest () + { + super(StringUtilTest.class.getName()); + } + + public void runTest () + { + String source = "mary, had, a,, little, lamb, and, a, comma,,"; + + // split the source string into tokens + String[] tokens = StringUtil.parseStringArray(source); + assert("tokens.length == 7", tokens.length == 7); + + // now join them back together + String joined = StringUtil.joinEscaped(tokens); + assert("joined.equals(source)", joined.equals(source)); + } + + public static Test suite () + { + return new StringUtilTest(); + } +}