如何使用Java为列表中的每个字符串添加或插入'(单引号),其中字符串用逗号分隔
Posted
技术标签:
【中文标题】如何使用Java为列表中的每个字符串添加或插入\'(单引号),其中字符串用逗号分隔【英文标题】:How to add or insert ' (single quotes) for every string in a list in which strings are separated by commas using Java如何使用Java为列表中的每个字符串添加或插入'(单引号),其中字符串用逗号分隔 【发布时间】:2013-06-28 08:16:21 【问题描述】:我有一个如下列表
[url1,url2,url3,url4]
此列表将基于 html 下拉列表中的多项选择。所以列表大小,即列表元素动态变化。我的问题是我无法获得获取字符串单引号的逻辑。 我希望上面的字符串列表显示为
'url1','url2','url3','url4'
这是每个字符串的单引号('
),不应删除逗号(,
)。请帮助我如何使用 Java 实现这一目标。
【问题讨论】:
请分享您的尝试。 无法获取保留引号的逻辑。但可以使用 replace() 删除 [ 和 ] 我们是在谈论包含您的“url”变量的List<String>
(在这种情况下,它们将显示在双引号之间)还是将您的列表表示为“[url1, url2,等]"?
您可以从列表中取出每个元素并将其放在单引号之间并添加回来..在代码中尝试此操作,如果您有任何问题,请告诉我们..
一种选择是用逗号分割字符串,然后将单引号附加到每个单词,然后将所有单词附加回来
【参考方案1】:
迭代列表(for/while)。
为列表中的每个元素附加<element-of-list>
。提示:在StringBuilder
上使用append()
。
截断/子串列表以删除最后添加的元素。提示:在String
类上使用子字符串。
【讨论】:
StringBuilder b=new StringBuilder();现在 b.append("''") 不会在字符串的开头和结尾追加 ' 对吗??【参考方案2】:如果你的元素在一个数组中,你可以这样做:
import java.util.ArrayList;
class Test1
public static void main(String[] args)
String[] s = "url1","url2","url3","url4";
ArrayList<String> sl = new ArrayList<String>();
for (int i = 0; i < s.length; i++)
sl.add("'" + s[i] + "'");
【讨论】:
【参考方案3】:试试这个
String[] str = "url1","url2","url3","url4";
ArrayList<String> strList = new ArrayList<String>();
for (String k:str)
strList.add("'" +k+ "'");
System.out.println("Printing the list");
for(String k:strList)
System.out.println(k);
【讨论】:
【参考方案4】:import org.apache.commons.lang.StringUtils;
...
...
String arr[] = new String[4];
arr[0] = "my";
arr[1] = "name";
arr[2] = "is";
arr[3] = "baybora";
String join = "'" + StringUtils.join(arr,"','") + "'";
结果:
'my','name','is','baybora'
【讨论】:
【参考方案5】:最快速有效的方法
例如
ArrayList<String> a=[url1,url2,url3,url4];
String s ="'"+a.toString().replace("[","").replace("]", "").replace(" ","").replace(",","','")+"'";
【讨论】:
【参考方案6】:您还可以使用 Java8 内置功能进行字符串连接,并使用第三方库将每个字符串括在引号中。
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.runners.MockitoJUnitRunner;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.StringJoiner;
@RunWith(MockitoJUnitRunner.class)
public class StringJoinerTest
@Test
public void testStringJoiner()
//init test data
String s1 = "team1";
String s2 = "team2";
List<String> teams = new ArrayList<>(2);
teams.add(s1);
teams.add(s2);
//configure StringJoiner
//when some values will be added to joiner it will return string started with prefix "(" an finished with suffix ")"
//between prefix and suffix values will be separated with delimiter ", "
StringJoiner teamNames = new StringJoiner(", ", "(", ")");
//if nothing has been added to the joiner it will return this value ('')
teamNames.setEmptyValue("(\'\')");
//fill joiner with data
for (String currentString : teams)
//if you need to wrap each string in single quotes you can do this via org.apache.commons.lang3.StringUtils#wrap
// or org.springframework.util.StringUtils#quote
teamNames.add(StringUtils.quote(currentString));
System.out.println(teamNames.toString());
【讨论】:
【参考方案7】:拥有一个 Util.java 文件,或者如果您已经拥有所有常见的 util 文件,那么只需添加这些静态方法
单引号
public static String singleQuote(String str)
return (str != null ? "'" + str + "'" : null);
双引号
public static String doubleQuotes(String str)
return (str != null ? "\"" + str + "\"" : null);
【讨论】:
【参考方案8】:您可以使用 Java 8 实用程序类java.util.StringJoiner
。
该类专门介绍格式化字符串值列表。
例如:
StringJoiner joiner = new StringJoiner("','", "'", "'");
joiner.add("url1");
joiner.add("url2");
joiner.add("url3");
joiner.add("url4");
System.out.println(joiner);
输出
'url1','url2','url3','url4'
注意,在StringJoiner
的构造函数中,
StringJoiner(CharSequence delimiter, CharSequence prefix, CharSequence suffix)
我们将单引号作为前缀和后缀传递以满足您的特定要求。
【讨论】:
【参考方案9】:使用 Java 8 流:
String[] array = "url1", "url2", "url3", "url4"
Stream.of(array).collect(Collectors.joining("','", "'", "'"));
【讨论】:
【参考方案10】:对于列表,您可以通过 Java 8 对其进行转换
list.stream().collect(Collectors.joining("','", "'", "'"));
【讨论】:
以上是关于如何使用Java为列表中的每个字符串添加或插入'(单引号),其中字符串用逗号分隔的主要内容,如果未能解决你的问题,请参考以下文章