如果在 c# 中缺少,请在字符串中添加前缀

Add prefix in string if missing in c#

我有以下 多个 交易传递给交易 string:

string transaction = "12345,56789";

我想检查是否该交易具有 前缀“0” 那么如何检查。

例如

"012345,056789";

假设如果这些交易没有 prefix '0'"12345,56789" 我想添加这样的前缀"012345,056789".

我试过下面的代码,它对我不起作用,谁能指导我如何实现它。

    if(transaction.StartsWith("0"))
    {
        transaction = transaction;
    }
    else
    {
        transaction = "0" + transaction;
    }

编辑:现在应该可以了

您可以像处理字符数组一样处理字符串,例如:

string transactionid  = "12345,56789";
string transactionid_split = transactionid.split(',');

if(transactionid_split[0][0] != "0")
transactionid_split[0] = "0" +  transactionid_split[0];

if(transactionid_split[1][0] != "0")
transactionid_split[1]  = "0" + transactionid_split[1];

transactionid = transactionid_split[0] + "," + transactionid_split[1]

如果你想检查字符串的每个数字部分,即

 "12345,56789"    =>   "012345,056789"
 "012345,56789"   =>   "012345,056789"
 "12345,056789"   =>   "012345,056789"
 "012345,056789"  =>   "012345,056789"

您可以 Split transaction 检查每个部分,最后 Join 这些部分返回:

using System.Linq;

...

transaction = string.Join(",", transaction
  .Split(',')
  .Select(part => part.StartsWith("0") ? part : $"0{part}"));

另一种可能是正则表达式:

 using System.Text.RegularExpressions;

 ...

 transaction = Regex.Replace(transaction, @"\b[1-9]", "0$&");

在这里,我们为每个部分匹配每个最左边的数字(如果它在 1..9 范围内)(注意 \b 用于单词边框)并添加 0 前缀:在 "0$&" 00$&代表整场比赛。

假设 transaction string 的格式总是由逗号分隔的两个数字,您可以使用 string.Split要拆分字符串,请检查 "0" 的前缀,如果缺少则添加它,然后将 strings 放回原处。

类似...

var transaction = "12345,56789";

var parts = transaction.Split(',');

// You'd want to check that 0 and 1 are valid indexes, probably.
if (!parts[0].StartsWith("0"))
{
   parts[0] = "0" + parts[0];
}
if (!parts[1].StartsWith("0"))
{
   parts[1] = "0" + parts[1];
}
transaction = $"{parts[0]},{parts[1]}";

如果 transaction 可能有多个逗号,您也可以遍历 parts