【问题标题】: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,等]"?
  • 您可以从列表中取出每个元素并将其放在单引号之间并添加回来..在代码中尝试此操作,如果您有任何问题,请告诉我们..
  • 一种选择是用逗号分割字符串,然后将单引号附加到每个单词,然后将所有单词附加回来

标签: java string list


【解决方案1】:
  1. 迭代列表(for/while)。

  2. 为列表中的每个元素附加<element-of-list>。提示:在StringBuilder 上使用append()

  3. 截断/子串列表以删除最后添加的元素。提示:在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("','", "'", "'"));
                  

                  【讨论】:

                    猜你喜欢
                    • 2022-01-13
                    • 2018-09-24
                    • 2015-03-12
                    • 1970-01-01
                    • 1970-01-01
                    • 2012-09-28
                    • 1970-01-01
                    • 2018-05-08
                    • 1970-01-01
                    相关资源
                    最近更新 更多