2017-09-19 2 views
0

임의의 길이의 부분 문자열을 대체해야합니다. 예를 들어 두 칸 사이.임의의 길이의 부분 문자열 대체

String str = "Insert random message here"; 
// Manipulation 
System.out.println(str); 

// Outputs: Insert a message here 

내가 문자열 - 클래스의 메소드 검색 한하지만 유용한 하나를 발견하지 않았습니다.

+0

. 다른 언어는 이에 대한 해결책이 다릅니다. – theGleep

+0

대체 할 텍스트를 식별하기위한 실제 기준은 무엇입니까? 나는 당신의 예제 텍스트에서 3 개의 공백을 보았습니다 - 대체 할 텍스트를 둘러싸고있는 공백은 무엇입니까? –

+0

@ theGleep : 죄송합니다. 자바. (내가 할 수있는 방법이 있나?하지만 여기 있니?) –

답변

0

가장 즉각적인 해결책은 결과 문자열 호출 한 쌍을 사용하여 연결하는 것입니다 (그것은 ... 내 나쁜 영어 때문에 수 있습니다) :

String random = "random" 
String str = "Insert random message here"; 

int nStart = str.indexOf(random); 
int nEnd = nStart + random.length; 

str = str.substr(0,nStart) + str.substr(nEnd); 
System.out.println(str); 

// Outputs: Insert a message here 
내 수학 끔찍한
  • 메모를, 그래서 숫자는 아마 하나 또는 두 개 떨어져 있습니다! 나는 OP와 같은 언어를 사용하지 않을 수 있습니다, 그러나 희망은 충분히 가까이 이해 될 수있다 :

  • 편집 추가 대신 "매직 넘버"

편집의 변수를 사용합니다.

+0

OP는 * 임의의 길이 *가 의미하는 것처럼 코드에서 6 번과 13 번을 어떻게 얻을 수 있습니까? –

+0

내 코드를 개정했습니다. – theGleep

+0

그러나 "임의"가 향 입력에 없으면 어떻게해야합니까? 무작위로 향기가 있고 두 칸 중 하나를 고르고 싶다면 어떻게해야할까요? 이 해결책은 단어 "무작위"가 포함되어야 함을 암시하지 않습니까? –

1

System.out.println이 자바라고 느낍니다. 개체의 replaceAll 함수를 사용하여 문자열 블록/일치하는 정규식을 다른 주어진 문자열로 바꿀 수 있습니다.

String str = "I am foo"; 
str.replaceAll("foo", "blah"); 
System.out.println(str); 

위 코드는 "I am blah"라고 인쇄해야합니다.

+0

예! 하지만 "foo"가없는 또 다른 향기가 있다면 어떨까요? –

+0

예상되는 것 즉 아무 것도하지 않아야합니다. 기본적으로 패턴을 matvhes하고, 발견되면이를 주어진 문자열로 대체합니다. –

0

이 같은 두 공간 사이의 첫 번째 단어와 일치하는 뜻이 정규식 \s(.*?)\s에 replaceFirst라고 사용할 수 있습니다 : 당신이 사용하는 어떤 언어

String str = "Insert random message here"; 
str = str.replaceFirst("\\s(.*?)\\s", " a "); 
System.out.println(str); 

출력

Insert a message here 
+0

Intresting! 이제 우리는 어딘가에 가고 있습니다 ... 만약 내가 그 단어를 바꾸고 싶다면? 제삼? 응? –

+0

@randycostanza이 경우에는 split을 사용하여 정규식으로는 n 번째 단어를 대체 할 수 없다고 생각합니다 :) –

관련 문제