別の文字列配列と一致させる必要がある文字列があります。両方の配列値との一致が見つかった場合は、数値を文字列から分割し、その数値に1を追加し、実際の文字列に新しい値を追加する必要があります。いくつかの分割と連結を試みました。しかし、問題を解決するための適切かつ効率的な方法がわかりませんでした。以下は私のシナリオです。
実際の文字列:
BK-TS00023,X1-TS00000101,X4-A10000024,Y1-3,
比較文字列
BK Books // Compare first two characters => BK Books matches with BK-TS00023
X1 Serials // Compare first two characters => X1 Serials matches with X1-TS00000101
したがって、これらの文字列との一致が見つかったら、 00023、00000101などの数値を取得し、値を 1 増やす必要があります。次に、デフォルトの文字列を追加します。結果の文字列は次のようになります。
結果文字列
'BK-TS00024',
'X1-TS00000102',
'X4-A10000025',
'Y1-4'
以下の方法を試しました。このシナリオを実行する適切な方法を提供するために誰か助けてください。
コード
InfoType="BK Books"; // or "X1 Serials" // or etc ..
var splitInfo = InfoType.Split(' ');
var SiteFileInfo = Db.SiteFiles.Where(asd => asd.Code == "AutoBarcode").Select(asd => asd.Line1).FirstOrDefault();
var splitSiteFile = SiteFileInfo.Split(',');
int cnt = 0;
foreach (var s in splitSiteFile)
{
cnt += 1;
if (s.Contains(splitInfo[0]))
{
//var infoSiteSplit = s.Split('-');
var olyNumber = Regex.Split(s, @"(?<=\p{L})(?=\p{N})");
int i = 0;
string Truncstring = "";
foreach (var a in olyNumber)
{
bool result = int.TryParse(a, out i);
if (result)
{
i += 1;
int befconv = Convert.ToInt32(a);
Truncstring = s.Replace(befconv.ToString(), i.ToString());
}
}
splitSiteFile[cnt - 1] = Truncstring;
string JoinString = string.Join(",", splitSiteFile);
Db.ExecuteStoreCommand("update SiteFile set Line1={0} where Code={1}", JoinString, "AutoBarcode");
Db.SaveChanges();
return Truncstring;
}
}