2010-05-27 3 views
1

다국어 웹 사이트를 설계했으며 데이터베이스의 일부 값은 언어 값으로 대체 될 태그를 가지며 태그 대괄호 ({ }) 완전히 제거하십시오.{tag}을 값으로 바꾸거나 {any-tag}를 완전히 제거하십시오

제거 괄호 :

value {mm} >> value mm 

완전히 제거

두 가지 경우가 있습니다

value {mm} >> value 

는 또한 {태그} 길이 될 수 있고 포함 할 수 있습니다 -

을 수 아무도 정규식으로 나를 도와?

+0

여기에 질문이 있습니까? 페이지를 사전 처리하려는 경우, 리소스 파일을 사용하여 국제화하는 방법에 대한 조언 등을 알 수 없습니다. – 48klocs

+0

{mm}을 mm으로 대체하거나 {mm}을 완전히 제거하는 정규 표현식이 필요합니다 –

+0

@ 48klocs가 말한 것을 추가하기 위해 ASP.NET은 다른 문화권을 수용해야하는 경우 ASP.NET이 이미 여러 언어 요소를 처리 할 수있는 방법을 제공합니다 및 언어. if/else 문과 데이터베이스의 값을 대체하는 것보다 훨씬 더 깨끗합니다. 관심이 있다면 ASP.NET * 세계화 * 및 * 현지화에 대한 조사를 수행하십시오. 이 프로세스는 * internationalization *이라고도합니다. –

답변

2

다음은 유용한 코드입니다. 많은 경우 옵션을 더 보려면 Regular-expressions.info을 참조하십시오.

모든 코드 Using System.Text.RegularExpressions;


{mm} (및 mm)의 모든 항목을 제거

Regex.Replace(myString, "{mm}", String.Empty, RegexOptions.None); 

이 모든 항목을 교체 {mm} (및 mm를)와,:

Regex.Replace(myString, "{mm}", "mm", RegexOptions.None); 

{any-characters}의 모든 항목을 제거

Regex.Replace(myString, @"{[\-a-z]*}", String.Empty, RegexOptions.IgnoreCase); 

any-characters으로 {any-characters}의 모든 항목을 대체합니다

Regex.Replace(myString, @"{(?<tag>[\-a-z]*)}", "${tag}", RegexOptions.IgnoreCase); 
+0

@ cyclotis04 : 정규 표현식은 나에게는 새롭고 이해하기 쉽지 않다고 생각합니다. 전에이 사이트를 방문했지만 빠른 솔루션이 필요했습니다. 이것이 제가 여기서 묻는 이유입니다. 하지만 조언을 주셔서 감사합니다;) 또한 stackoverflow 나를위한 아카이브 같다. 그래서 내가 나중에 똑같은 것을 필요로한다면, 먼저 여기를 보겠습니다. –

+0

@HasanGursoy : 네, 분명히 그들에 관해 어떤 규칙도 없습니다. 내가 준 해결책 중 하나가 당신이 원하는 것을하지 않는다는 것을 알게되면, 무엇이 잘못되었는지 말해주고, 좀 더 구체적인 정규식으로 당신을 도울 수 있습니다. =] – dlras2

+1

@ 하산 : http://msdn.microsoft.com/en-us/library/az24scfc.aspx – Joren

0

닷넷 이미 페이지 String.Format을 사용하여 유사한 기능을 제공합니다.

string.Format(new CultureInfo("en-US"), "value {0:N}", 10000); // returns 10,000.00 
string.Format(new CultureInfo("es-ES"), "value {0:N}", 10000); // returns 10.000,00 

두 가지 단점이 방법 :

string.Format("value {0}", ""); // returns "value " 
string.Format("value {0}", "some value"); // returns "value some value" 

당신은 지정 숫자 서식으로,이 방법으로 더 고급 일을 할 수

  1. 없음 경우 브래킷을 제거하기위한 .
  2. 자리 표시 자의 이름을 지정할 수 없습니다. 서수 자리 표시자를 사용해야합니다. {0}, {1} ... {n}.
+0

니스는 정확하지만 내가 필요한 것은 아닙니다. 태그를 대체 할 대상을 알아야합니다. 예를 들어 {power-source}와 같은 태그가 있습니다. 모든 0을 언어 레이블로 바꿀 수는 없습니다. 또한 사용자 친화적이지 않습니다. –

+0

아, 그래, 사용자 입력 내용에는 좋지 않습니다. 잡았다. – Greg

관련 문제