2016-09-25 6 views
0

Matlab에서 규칙 기반 문자열 편집 기능을 개발하려고합니다. 내가 좋아하는 캐릭터를 생성 한 것으로 가정 해 보겠습니다Matlab의 규칙에 따라 선택적으로 문자열 편집

다음

  1. 문자열이 함께 시작할 수 없습니다 :

    myString = '/+*43/*/+34/5*2/*' 
    

    나는 일련의 규칙에 따라 특정 수학 연산자를 제거 할 것을 더 세웠 죠 '*'또는 '/'연산자

  2. 문자열은 모든 연산자로 끝날 수 없습니다.
  3. 모든 순차 연산자는 해당 시퀀스의 첫 번째 연산자로 바뀝니다. 전자는 1

2. 그래서 예를 들어 위의 문자열에 줄일 위반되지 아니하는 모든 방법이 문제를 해결하기 위해 괜찮

myNewString = '+43/34/5*2' 

하지만 벡터화 부울 방법이 선호 될 것이다.

이 문자열로 수행하고자하는 작업은 str2num을 수행하여 값을 반환하고 오류를 throw하지 않아도됩니다.

감사합니다.

+0

정규 표현식은 아마 탐험 할 수있는 좋은 수단이 될 것입니다. – excaza

답변

1

정규 표현식은 여기에 사용할 수 있습니다

myString = '/*+*43/*/+34/5*2/*'; 
myString = regexprep(myString,'^[/*]+',''); % accomplish the rule #1 
myString = regexprep(myString,'[/*+-]+$',''); % accomplish the rule #2 
myString = regexprep(myString,'[/*+-]{2,}','${$0(1)}') % accomplish the rule #3 
+0

고마워요! 그것은 우아합니다. while 루프 및 빈 세트 교체가 포함 된 오히려 해킹 메소드에서 excaza가 제안한 정규 표현식을 사용하려고했지만 훨씬 더 간단합니다. 정규 표현식에서 배울 점이 많습니다. –

관련 문제