Stringbuilder 在将其转换为字符串后添加反斜杠
Stringbuilder adds backslash after converting it to string
我有一种情况想在字符串中添加引号。
static void Main(string[] args)
{
int valueCounter = 0;
int valueCount = 0;
var valueBuilder = new StringBuilder();
List<string> values = new List<string>();
values.Add("AAAA");
values.Add("BBBB");
values.Add("CCCC");
valueCount = values.Count;
foreach (var value in values)
{
valueCounter++;
if ((valueCounter - 1) > 0)
valueBuilder.Append("\"");
valueBuilder.Append(values[valueCounter - 1].ToString());
if (valueCounter != valueCount)
{
valueBuilder.Append(@",");
}
}
string output = valueBuilder.ToString();
}
如您所见,将 Stringbuilder 转换为字符串后,它会将反斜杠添加到字符串中。
请帮助我知道如何得到想要的结果:“AAAA”,“BBBB”,“CCCC”
只需删除 valueBuilder.Append("\"");
我的错误。它只是转义 \
在 Java 字符串对象中使用引号必须进行转义。您抱怨的 \
仅在您的工具中可见,并且需要转义 "
以便不会发生错误。如果您要执行 System.out.println(output);
,您将看不到 \
字符。
我认为下面的 foreach
循环代码可以解决您的问题。
foreach (var value in values)
{
value = "\""+value+"\"";
valueBuilder.Append(value);
if (++valueCounter != valueCount)
{
valueBuilder.Append(@",");
}
}
这是您的代码的更正版本(修复了第一个片段的封闭):
string[] strArr = new string[] {
"AAAA", "BBBB","CCCC"
};
StringBuilder sb = new StringBuilder();
for(int i = 0; i < strArr.Length; i++) {
sb.Append('"');
sb.Append(strArr[i]);
sb.Append('"');
if(i < strArr.Length - 1)
sb.Append(',');
}
var output = sb.ToString();
这是调试器显示结果的方式(quoted/escaped 视图):
这是人类可读格式的样子:
"AAAA","BBBB","CCCC"
提示与技巧:
您可以使用 nq
format-specifier 来显示字符串 unquoted/unescaped:
output,nq
我有一种情况想在字符串中添加引号。
static void Main(string[] args)
{
int valueCounter = 0;
int valueCount = 0;
var valueBuilder = new StringBuilder();
List<string> values = new List<string>();
values.Add("AAAA");
values.Add("BBBB");
values.Add("CCCC");
valueCount = values.Count;
foreach (var value in values)
{
valueCounter++;
if ((valueCounter - 1) > 0)
valueBuilder.Append("\"");
valueBuilder.Append(values[valueCounter - 1].ToString());
if (valueCounter != valueCount)
{
valueBuilder.Append(@",");
}
}
string output = valueBuilder.ToString();
}
如您所见,将 Stringbuilder 转换为字符串后,它会将反斜杠添加到字符串中。
请帮助我知道如何得到想要的结果:“AAAA”,“BBBB”,“CCCC”
只需删除 valueBuilder.Append("\"");
我的错误。它只是转义 \
在 Java 字符串对象中使用引号必须进行转义。您抱怨的 \
仅在您的工具中可见,并且需要转义 "
以便不会发生错误。如果您要执行 System.out.println(output);
,您将看不到 \
字符。
我认为下面的 foreach
循环代码可以解决您的问题。
foreach (var value in values)
{
value = "\""+value+"\"";
valueBuilder.Append(value);
if (++valueCounter != valueCount)
{
valueBuilder.Append(@",");
}
}
这是您的代码的更正版本(修复了第一个片段的封闭):
string[] strArr = new string[] {
"AAAA", "BBBB","CCCC"
};
StringBuilder sb = new StringBuilder();
for(int i = 0; i < strArr.Length; i++) {
sb.Append('"');
sb.Append(strArr[i]);
sb.Append('"');
if(i < strArr.Length - 1)
sb.Append(',');
}
var output = sb.ToString();
这是调试器显示结果的方式(quoted/escaped 视图):
这是人类可读格式的样子:
"AAAA","BBBB","CCCC"
提示与技巧:
您可以使用 nq
format-specifier 来显示字符串 unquoted/unescaped:
output,nq