Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中向stringBuilder对象的两侧追加单引号_Java_String_Append_Stringbuilder - Fatal编程技术网

如何在java中向stringBuilder对象的两侧追加单引号

如何在java中向stringBuilder对象的两侧追加单引号,java,string,append,stringbuilder,Java,String,Append,Stringbuilder,我想在字符串数组中添加单引号。如果我有5个值。(1,2,3,4,5)。我需要像这样的“1”,“2”,“3”,“4”,“5” 我已经尝试了下面的一些,但我得到了错误 public class Main() { StringBuilder values=new StringBuilder(); values=getValues(1); System.out.println(values.toString());

我想在字符串数组中添加单引号。如果我有5个值。(1,2,3,4,5)。我需要像这样的“1”,“2”,“3”,“4”,“5”

我已经尝试了下面的一些,但我得到了错误

public class Main()
{
        StringBuilder values=new StringBuilder();           

            values=getValues(1);

            System.out.println(values.toString());

            public StringBuilder getValues(int productid){
                    StringBuilder Variable_1=new StringBuilder();       
                    Variable_1=get(productid);                  
                    return Variable_1.deleteCharAt(Variable_1.length()-1);
                }

    public static StringBuilder get(String product)
    {
    /Some quoatoes to retrive value from db/
    while (rs.next()) {
                    number = rs.getString("org");
                    orgNames.append("'");
                    orgNames.append(number);
                    orgNames.append("'");
                    orgNames.append(",");

                }
    return orgNames;
    }
}  
我得到的例外如下

  java.lang.StringIndexOutOfBoundsException: String index out of range: -1
        at java.lang.AbstractStringBuilder.deleteCharAt(AbstractStringBuilder.java:766)
        at java.lang.StringBuilder.deleteCharAt(StringBuilder.java:280)
        at calc.getValues(process.java:8)

我不太确定你的代码是做什么的,但我已经编写了一个函数,它将以
字符串数组作为输入,并用引号将每个元素括起来

String[] appendQuotes(String[] array)
{
    List<String> result = new ArrayList<>();
    for(String str : array)
    {
        StringBuilder sb = new StringBuilder();
        sb.append("'");
        sb.append(str);
        sb.append("'");
        result.add(sb.toString());
    }
    return result.toArray();
}
String[]追加引号(String[]数组)
{
列表结果=新建ArrayList();
for(字符串str:array)
{
StringBuilder sb=新的StringBuilder();
某人加上(“”);
某人附加(str);
某人加上(“”);
添加(sb.toString());
}
返回result.toArray();
}

在上一次迭代中,变量_1.length()-1返回索引越界,因为 变量_1.length()为零

检查

if(Variable_1.length()>0)
在deleteCharAt

之前,Apache Commons Lang 3中已经有一个方法可以在其他字符串之前添加char/string,使用Java8特性的示例代码如下所示:

import org.apache.commons.lang3.StringUtils;
import org.assertj.core.api.Assertions;
import org.testng.annotations.*;

import java.util.stream.Stream;

public class StringArrayWrapTest {

    public static final String SINGLE_QUOTE_SIGN = "'";

    @Test
    public void stringArrayWrapTest() {
        //given
        String[] arrayOfStrings = {"1", "2", "3", "4", "5"};

        //when
        String[] arrayOfStringsWithQuotes = (String[]) Stream.of(arrayOfStrings)
                .map((stringFromArray -> StringUtils.wrap(stringFromArray, SINGLE_QUOTE_SIGN)))
                .toArray(size -> new String[size]);
        //then
        Assertions.assertThat(arrayOfStringsWithQuotes)
                .containsExactly(new String[]{"'1'", "'2'", "'3'", "'4'", "'5'"});
    }
}

同样的事情也可以通过Spring框架完成:

import org.springframework.util.StringUtils;

String wrapWithSingleQuotes(String sampleString) {
        return StringUtils.quote(sampleString);
    }

这些是单独的代码块还是一个?如果是后者,那就不应该编译了。如果是前者,你需要更好地格式化你的代码,这样就不会出现这种情况。重新检查你发布的代码一次。你没有得到任何编译错误吗?你可以发布整个代码吗?我已经更新了我的代码这是java还是javascript?这里有关键字
function
,但Java中没有关键字
function
。我也没有看到任何数组。你的问题措辞很糟糕。如果长度为零,我什么也不返回吗