根据条件将字符串中的字符串从一个字符串更改为另一个字符串

时间:2013-04-16 11:58:25

标签: c#

我有一个字符串数组,其中大多数是字符串值“true”或“false”,还有其他字符串,但我不想改变它们。

所以我想循环遍历字符串,我遇到单词“true”或“false”我想将字符串更改为“1”或“0”

这些1,0和其他字符串最终将被用作传递给SQL存储过程IE的参数:seCmd.Parameters [“@ CheckListRef”]。Value = data [0];

我只是在努力学习语法,因此寻求指导

string[] data = args.Trim().Split(',');

// Loop over strings
foreach (string s in data)
{
    if(s == "true")
    {
        convert the string True to the string 1
    }
    else if(s == "false")
    {
      convert the string True to the string 0
    }
}

请有人提供一些指导

8 个答案:

答案 0 :(得分:2)

您缺少的代码是对您正在检查的数组位置的引用。

使用for循环可以保留该引用:

string[] data = args.Trim().Split(',');

// Loop over strings
for(int i = 0; i < data.Length; i++)
{
    if(data[i] == "true")
    {
        data[i] = "1";
    }
    else if(data[i] == "false")
    {
        data[i] = "0";
    }
}

注意 - 以上是区分大小写的,因此您可以使用data[i].Equals("true", StringComparison.InvariantCultureIgnoreCase)替换字符串测试。

答案 1 :(得分:1)

这应该有所帮助:

   string[] data = args.Trim().Split(',');

    for(int i = 0; i < data.Length; i++)
    {
        if(data[i] == "true")
        {
            data[i] = "1";
        }
        else if(data[i] == "false")
        {
            data[i] = "0";
        }
    }

此外,您可以通过执行以下操作来缩短代码:

   string[] data = args.Trim().Split(',');

    for(int i = 0; i < data.Length; i++)
    {
        data[i].Replace("true", "0").Replace("false", "1");
    }

答案 2 :(得分:1)

这是LINQ版本,它会返回一个新数组:

string[] newData = data.Select(r => (r == "true" ? "1" : r == "false" ? "0" : r))
                        .ToArray();

或者,如果你想忽略大小,那么:

newData = data.Select(r => 
           (r.Equals("true", StringComparison.CurrentCultureIgnoreCase) ? "1" 
           :r.Equals("false", StringComparison.CurrentCultureIgnoreCase) ? "0" 
           : r))
           .ToArray();

答案 3 :(得分:0)

您无需将其转换为1 or 0 。如果您的数据类型为Convert.ToBoolean(),只需执行bit,然后尝试:

bool bln;
if(bool.TryParse(data[0], out bln))
 {
   seCmd.Parameters.Add("@CheckListRef",SqlDbType.Bit).Value =bln;
 }

答案 4 :(得分:0)

我会为此使用for循环,但在你的情况下这不起作用

if(s == "true")
{
    s="1";
}
else if(s == "false")
{
  s="0";
}

答案 5 :(得分:0)

寻找LINQ表达式:

var parsedData = data.Trim()
.Where(d => d == "true" || d == "false")
.Select(d => bool.Parse(d) ? "1" : "0")
.ToList();

答案 6 :(得分:0)

string originalString = "true, True, FALSE,  something true,false,something else,false";
string resultString = Regex.Replace(
                originalString, @"((?<=(,\s*))|^)true((?=(\s*,))|$)", "1",RegexOptions.IgnoreCase);
resultString = Regex.Replace(
                resultString, @"((?<=(,\s*))|^)false((?=(\s*,))|$)", "0", RegexOptions.IgnoreCase);
string[] resultArray = Regex.Split(resultString, @"\s*,\s*");

resultArray:

 1
 1
 0
 something true
 0
 something else
 0

答案 7 :(得分:0)

var data = args.Trim()
               .Split(',')
               .ToList()
               .ConvertAll(s => s.Replace("true", "1").Replace("false", "0"));
相关问题