我有一个字符串
"[\"1,1\",\"2,2\"]"
我希望将此字符串转换为此
1,1,2,2
我正在使用替换功能
obj.str.Replace("[","").Replace("]","").Replace("\\","");
但它没有返回预期的结果。 请帮忙。
答案 0 :(得分:5)
您尚未删除双引号。使用以下内容:
obj.str = obj.str.Replace("[","").Replace("]","").Replace("\\","").Replace("\"", "");
答案 1 :(得分:2)
如果字符串或排除字符列表很长,这是一种优化方法:
public static class StringExtensions
{
public static String RemoveAll(this string input, params Char[] charactersToRemove)
{
if(string.IsNullOrEmpty(input) || (charactersToRemove==null || charactersToRemove.Length==0))
return input;
var exclude = new HashSet<Char>(charactersToRemove); // removes duplicates and has constant lookup time
var sb = new StringBuilder(input.Length);
foreach (Char c in input)
{
if (!exclude.Contains(c))
sb.Append(c);
}
return sb.ToString();
}
}
以这种方式使用它:
str = str.RemoveAll('"', '[', ']', '\\');
// or use a string as "remove-array":
string removeChars = "\"{[]\\";
str = str.RemoveAll(removeChars.ToCharArray());
答案 2 :(得分:1)
您应该执行以下操作:
obj.str = obj.str.Replace("[","").Replace("]","").Replace("\"","");
string.Replace
方法不会替换字符串内容。这意味着,如果你有
string test =“12345”并执行
test.Replace("2", "1");
测试字符串仍为"12345"
。替换不会更改字符串本身,但会创建包含已替换内容的新字符串。因此,您需要将此新字符串分配给新的或相同的变量
changedTest = test.Replace("2", "1");
现在,changedTest
将包含"11345"
。
关于代码的另一个注意事项是,字符串中实际上没有\字符。它仅显示为转义引用字符。如果您想了解更多相关信息,请read MSDN article on string literals.
答案 3 :(得分:1)
怎么样
var exclusions = new HashSet<char>(new[] { '"', '[', ']', '\\' });
return new string(obj.str.Where(c => !exclusions.Contains(c)).ToArray());
一次性完成所有操作。
Tim Schmelter写道,如果你想经常这样做,特别是对于长字符串的大型排除集,你可以像这样做一个扩展。
public static string Strip(
this string source,
params char[] exclusions)
{
if (!exclusions.Any())
{
return source;
}
var mask = new HashSet<char>(exclusions);
var result = new StringBuilder(source.Length);
foreach (var c in source.Where(c => !mask.Contains(c)))
{
result.Append(c);
}
return result.ToString();
}
所以你可以做到,
var result = "[\"1,1\",\"2,2\"]".Strip('"', '[', ']', '\\');
答案 4 :(得分:0)
仅使用此正则表达式[0-9]+
捕获数字,然后连接匹配项:
var input = "[\"1,1\",\"2,2\"]";
var regex = new Regex("[0-9]+");
var matches = regex.Matches(input).Cast<Match>().Select(m => m.Value);
var result = string.Join(",", matches);