String str = "USD SBFARE 4067.71 OVDPCT 8P SBMARKUP 0A TPS 59486 CC 0P OTH 0A"
이 문자열에서 "8" (OVDPCT 8P)
이 필요합니다.문자열에서 숫자를 찾는 방법
번호는 항상 OVDPCT을 따라 10, 12 등은 임의의 숫자를 의미 할 수있는 P.
이 8 앞에.
어떻게하면 C#을 사용할 수 있습니까?
String str = "USD SBFARE 4067.71 OVDPCT 8P SBMARKUP 0A TPS 59486 CC 0P OTH 0A"
이 문자열에서 "8" (OVDPCT 8P)
이 필요합니다.문자열에서 숫자를 찾는 방법
번호는 항상 OVDPCT을 따라 10, 12 등은 임의의 숫자를 의미 할 수있는 P.
이 8 앞에.
어떻게하면 C#을 사용할 수 있습니까?
몇 가지 변형이 있습니까? 항상 OVDPCT *P
을의 경우
다음 패턴은 다음과 같습니다
Match match = Regex.Match(str,@".*OVDPCT (\d+)P.*");
int num = int.Parse(match.Groups[1].Value);
참고 : 여기 매우 거친되고있어, 당신은 아마 싶어
이.*OVDPCT (\d+)P.*
당신은 다음과 같이 사용할 수 있습니다 match.Success
을 확인하고 int.TryParse
도 사용하십시오.
사용 방법 ..? –
OP가이 질문을하는 이유는 코드에 작은 버그가 있기 때문입니다. 그룹 대신 그룹 – varocarbas
@varocarbas oops가 맞습니다. 결정된. 감사. – Lloyd
이것은 다음 작동한다 : D +의 \
.*?OVDPCT (\d+)P.*
정수 번호 정규식이다. 따라서
resultString = Regex.Match(subjectString, @"\d+").Value;
은 문자열을 숫자로 줄 것입니다. 그러면 Int32.Parse (resultString)가 해당 번호를 제공합니다.
그래서 당신은
var match = System.Text.RegularExpressions.Regex.Match(str, "OVDPCT (?<Number>\\d+)P", System.Text.RegularExpressions.RegexOptions.IgnoreCase);
if(match.Success)
{
var number = match.Groups["Number"].Value;
}
는하지만,이 라인은 데이터베이스의 기록처럼 보인다는 아니라고 할 정규 표현식을 사용할 수 있습니까?
변명이 같은 단편적인 코드를하지만 뭔가 :
var str = "USD SBFARE 4067.71 OVDPCT 8P SBMARKUP 0A TPS 59486 CC 0P OTH 0A";
var strAsArray = str.Split(" ".ToArray(), StringSplitOptions.RemoveEmptyEntries);
var subject = strAsArray[4].Trim(); // assuming fifth element
var value = new Regex("^[0-9]+").Match(subject).Value;
Console.WriteLine("Found: ", value);
패턴이 무엇입니까? 번호는 항상'OVDPCT' 다음에'P'를 앞서는가? 아니면 항상 5 번째 줄입니까? 또한, 지금까지 어떤 솔루션을 시도 했습니까? – mart1n
@ mart1n 예 항상 OVDPCT를 따르고 다음을 사용합니다. –