다음과 같은 문자열 시퀀스로 시작하는 기존 레코드에 정수를 어떻게 추가 할 수 있는지 알려주시기 바랍니다.기존 레코드에 정수를 추가하는 방법은 무엇입니까?
S0000 -
종류 안부 S00027
, Indunil Sanjeewa다음과 같은 문자열 시퀀스로 시작하는 기존 레코드에 정수를 어떻게 추가 할 수 있는지 알려주시기 바랍니다.기존 레코드에 정수를 추가하는 방법은 무엇입니까?
S0000 -
종류 안부 S00027
, Indunil Sanjeewa논리이다
Substring()
Int.Parse
또는 Int.TryParse
string.Concat
를 사용하거나 string + integer
이 코드를보십시오 :
string record = "S00009";
string recordPrefix = "S";
char paddingCharacter = '0';
string recordNoPart = record.Substring(recordPrefix.Length);
int nextRecordNo = int.Parse(recordNoPart) + 1;
string nextRecord = string.Format("{0}{1}", recordPrefix, nextRecordNo.ToString().PadLeft(record.Length - recordPrefix.Length, paddingCharacter));
을 kurakura88 이미 로직을 주신 @. 난 그냥 하드 코어 C# 코드를 제공했습니다.
나는 내 솔루션이 정확하다고 말하고 싶지만 동시에 더 나은 구현이 거기에있을 수 있고 이미 제공 했음에도 동의하지만 당신도 뭔가를 놓쳤다는 것에 동의한다. :) –
내가 말한 것을 신경 쓰지 마라. 답변을 제공해 주셔서 감사합니다. – kurakura88
당신은 접근
string input = @"S0000";
string pattern = @"\d+";
string format = @"0000";
int addend = 1;
string result = Regex.Replace(input, pattern,
m => (int.Parse(m.Value) + addend).ToString(format));
// result = S0001
정규 표현식 \d+
일치하는 모든 숫자를 사용할 수 있습니다.
MatchEvaluator
은 정수와 일치하는 값을 변환합니다. 그런 다음 가수를 더합니다. 그런 다음 지정된 형식을 사용하여 값을 문자열로 변환합니다.
마지막으로 Replace
메서드를 사용하면 이전 값이 새 값으로 바뀝니다.
기존의 레코드가 마지막으로 문자열입니까? – kurakura88
예. 예 : S00009 –