2009-12-06 6 views
1

문자열에있는 두 개의 토큰을 모두 "c"문자가 붙은 double 값으로 바꾸려고합니다. 그것을 할 수있는 쉬운 방법이 있습니까? 나는 정규 표현식 예를 들어RegEx를 사용하여 double 찾기 및 바꾸기

을 갈 수있는 방법이라고 생각, 나는 다음과 같은

treand60(12.3)/1010 + 1 >1010 

기본적으로 당신이보고 싶어

treand60(12.3c)/1010c + 1c >123c 

제안

+0

목적을 위해 토큰을 무엇이라고 생각하십니까? – Amber

+0

산술 또는 논리 연산자로 구분되는 항목 또는() – mustafabar

답변

2

로 변경 싶어 모든 자릿수는 선택적으로 소수점과 다른 자릿수로 끝나고 'c'를 덧붙입니다. 여기에 펄을 사용하는 가정, 예입니다 (귀하의 질문은 말을하지 않음) :

$_ = 'treand60(12.3)/1010 + 1 >1010'; 
s/\b\d+(?:\.\d+)?/$&c/g; 
print; # output is "treand60(12.3c)/1010c + 1c >1010c" 

\d+ 1 이상의 숫자이며, 다음 \.\d+는 소수점 1 개 이상의 숫자입니다. (?: ...)non-capturing group입니다. 마지막으로 ?은 "0 또는 그 중 하나와 일치"를 의미합니다 (즉, 선택 사항 임). 그리고 \b은 단어 경계에서만 일치한다는 것을 의미합니다 (숫자가 단어 문자 바로 뒤에 오기 때문에 "Hello123"과 같은 단어는 일치하지 않습니다).

using System.Text.RegularExpressions; 
// ... 

string input = "treand60(12.3)/1010 + 1 >1010"; 
Regex regex = new Regex(@"\b\d+(?:\.\d+)?"); 
string output = regex.Replace(input, (m) => m.Value + 'c'); 
Console.WriteLine(output); // prints "treand60(12.3c)/1010c + 1c >1010c" 

Regex.Replace 호 내의 람다 식 단순히 검색 텍스트를 취득하고, 'C'를 추가 MatchEvaluator이다 : 여기

는 C# 1 당량이다.

+0

죄송합니다. C#으로 작업하고 싶다는 언급을하지 못했습니다. – mustafabar

+0

내 업데이트를 확인하십시오. – bobbymcr

+0

완벽하게 작동합니다. 감사합니다. – mustafabar

관련 문제