2017-09-11 10 views
0

나는 문자열을 가지고캐치 문자열 C 번호, 텍스트 및 배열에 자신의 인덱스를지도

2) 그들에게 이렇게 10의 값을 할당 따옴표와, :

int[] result = {0,10,10,0,0,10,10,10,0,0,10,0} 

감사합니다.

+0

지금까지 시도한 것을 공유하십시오. – lintmouse

+0

아무 것도 시도하지 않았다면 여기에 아이디어가 있습니다. _space_에서 문자열을 분할하십시오. 그런 다음 결과 문자열 각각에 큰 따옴표가 있는지 확인한 다음 ** 10 ** ** else ** 0 **을 int 배열로 삽입합니다. –

+1

하드 알고리즘 문제가 아니므로 직접 시도하십시오. –

답변

0

확인이 프로그램

var data = "Lorem \"ipsum dolor\" quisque at \"massa non erat\" . Donec auctor \"blandit\" nibh!"; 
     var arrayText = data.Split(' '); 
     int[] result = new int[arrayText.Length]; 
     var i = 0; 
     var doublequotebits = false; 
     foreach (var value in arrayText) 
     { 
      if (value.StartsWith("\"") && value != ".") 
       doublequotebits = true; 

      if (doublequotebits) 
       result[i] = 10; 

      i++; 

      if (value.EndsWith("\"")) 
       doublequotebits = false; 
     } 
3

이 시도 :

var text1 = "Lorem \"ipsum dolor\" quisque at \"massa non erat\". Donec auctor \"blandit\" nibh!"; 

var output = 
    text1 
     .Split('"') 
     .SelectMany((x, n) => x.Trim().Split(' ').Select(y => n % 2 == 0 ? 0 : 10)) 
     .ToArray(); 

int[] result = new [] { 0, 10, 10, 0, 0, 10, 10, 10, 0, 0, 0, 10, 0 }을 생산하고 있습니다.

그게 정확히 무슨 일이 아니지만, 두 번째 큰 따옴표 다음에 .이 있다는 사실은이 코드가 .이 유효한 단어라고 생각하게 만듭니다. 먼저 문자열을 정리하는 방법에 대해 생각할 필요가 있습니다.

+0

텍스트는 큰 따옴표로 시작하는 경우 코드가 작동하지 않습니다. –

+0

@Enigmativity 방법 : var text1 ="\ "Lorem ipsum dolor \ "quaque at \"massa non erat \ ". Donec auctor의 \ "blandit의 \"nibh! ";. @ ZasypinN.V – ArtJ

+0

은 - 영업 이익은 해당 특정 문자열에 대한 질문,하지만'어디에요 퍼팅 (Y => Y를 =!"'에 이어 두 번째로'.Split ") (...)'영업에 대한 충분한 수정 될 수있다 – Enigmativity

1

Linq를 사용하면 쉽게 달성 할 수 있습니다.

 string text1 = @"Lorem ""ipsum dolor"" quisque at ""massa non erat"".Donec auctor ""blandit"" nibh!"; 
     text1 = text1.Replace("."," "); 
     string[] splitted = text1.Split(' '); 
     List<int> result = new List<int>(); 
     bool alreadystarted = false; 
     foreach (string element in splitted) 
     { 
      if (element.Contains("\"")) 
      { 
       if (alreadystarted == false) 
       { 
        if (element.Count(f => f == '"') != 2) 
        { 
         alreadystarted = true; 
        } 
        result.Add(10); 
       } 
       else 
       { 
        alreadystarted = false; 
        result.Add(10); 
       } 
      } 
      else 
      { 
       if (alreadystarted == true) 
       { 
        result.Add(10); 
       } 
       else 
       { 
        result.Add(0); 
       } 
      } 
     } 

INT 결과는 다음과 같습니다 :이 작업을 수행하는 방법에 대한 깊은 이해를 원하는 코드를 더 쉽게 해석하고 편집 할 수 있도록하려면, 나는 다음과 같은 코드를 사용하는 것이 좋습니다

0, 10, 10, 10, 10, 10, 0, 0, 10, 0