2017-02-20 9 views
-2

&을 생성해야하는 루비 스크립트를 구현했습니다. 올바른 위치에 기본 코드 조각을 삽입하십시오. 문제는 이러한 코드 조각 중 일부는 존재하는 코드의 알파벳 순서를 준수해야한다는 것입니다.정규 표현식은 알파벳 순서로 텍스트에 단어를 삽입합니다.

//... 
    UPDATEFIELD((&(answers)), ((ListTO *)[custominputstream readCustomSerializable])); 
    UPDATEFIELD((&(text)), ([custominputstream readString])); 
    UPDATEFIELD((&(title)), ([custominputstream readString])); 
    //... 

(가) 결과를 바란 것입니다 : 예를 들어

, 우리는 다음과 같은 코드로 (이 UPDATEFIELD((&(thumb)), ([custominputstream readString])); 것이 경우) 단어 '엄지 손가락'에 대한 코드 조각을 삽입 할 필요가 있다고 가정합니다 :

//... 
    UPDATEFIELD((&(answers)), ((ListTO *)[custominputstream readCustomSerializable])); 
    UPDATEFIELD((&(text)), ([custominputstream readString])); 
    UPDATEFIELD((&(thumb)), ([custominputstream readString])); //here is the right place to do it. 
    UPDATEFIELD((&(title)), ([custominputstream readString])); 
    //... 

정규식을 사용하여 텍스트 삽입을위한이 정확한 위치를 찾는 방법은 무엇입니까? 단어의

+0

우리는 당신이 이미 시도한 것을 보여줍니다. – mudasobwa

+0

@mudasobwa 문서에서 내 문제와 관련이 없으므로 보여줄 것이 없습니다. – nrx

+0

프로그래밍은 docs/SO의 솔루션을 복사하여 붙여 넣는 것이 아니라 문제를 해결하는 것입니다. – mudasobwa

답변

0

현재 순서는 문제 향한

answers < text < title 

접근 방법은 상단에서 파일을 읽고 중심을 파괴 할 수있다. 귀하의 경우

UPDATEFIELD((&(text)), ([custominputstream readString]));

입니다

text

에 불과하다 다음 단어를 비교하려면

/(?<=UPDATEFIELD\(\(&\()\w+(?=\))/ 문자열 를 참조하십시오. 귀하의 경우에 될 일이 어떤 thumb

if 'thumb' < 'text' 
    #place it above text 
else #(which is obvious) then 
    #place it below 
end 

순서를 따라서 당신은 당신이 당신의 목표에 도달 할 때까지 같은 운동을 반복해야 할 수 있습니다,

answers < text < thumb < title 

당신의 파일이 꽤 큰됩니다.

binary search 우리는 단어를 삽입해야하는 곳에 도달하려고합니다.

+0

주셔서 감사합니다. 빠른 응답 주셔서 감사합니다, 정확히 내가 원하는 것 같습니다! 이제 정규 표현식과 루비에서 모두 멍청한 짓을하기 때문에 그것을 적용 할 시간이 필요합니다. 내가 다시 답장을 + 답 대답을 받아 들일거야 :) – nrx

+0

흠 ... 나는 일치하는 줄 위/아래 라인을 직접 삽입하는 방법을 얻을 수 없습니다. 이전에는 이러한 접근 방식을 사용했습니다. def dataAppendTo (methodName, string, data, bottomEdge) \t return data.sub /(-.*#methodName}.*\n)((.*\n) *?) (. * # {bottomEdge}. *) /, '\ 1 \ 2'+ string + ' \ 4' end' 새 줄을 삽입하려면 여기를 클릭하십시오. – nrx

+0

파일을 문자열로 읽고 '\ n'또는 '\ n \ r'로 나누고 원하는 단어의 색인을 찾고'array '로 새 단어를 삽입하는 것이 쉬운 방법 중 하나라고 생각합니다. insert (index, word)'이것이 도움이 되었으면 좋겠다. – aelor