2010-06-02 6 views
32

"."문자 앞에 올린 문자열의 모든 문자를 얼마나 효과적으로 제거합니까?문자 "."앞에 문자를 제거하십시오.

입력 : Amerika.USA

출력 : 미국

+2

항상 거기에만가는 :이 하나 대신 피벗의 마지막 발생 후 문자열을 잘라

public static string truncateStringAfterChar(string input, char pivot){ int index = input.IndexOf(pivot); if(index >= 0) { return input.Substring(index + 1); } return input; } 

:

이 사람은 피벗의 첫 발생 후 문자열을 잘라 한 기간이 될까요? –

+0

@James Black : 예 – loviji

답변

85

당신은 IndexOf method 등 같은 Substring method 사용할 수 있습니다

string output = input.Substring(input.IndexOf('.') + 1); 

을 위의 경우에는 오류 처리가 없으므로 입력 문자열에 마침표가 없으면 문제가 발생합니다.

+6

@casperOne 실제로 IndexOf는 -1을 반환하지 않으며 문자열은 부분 문자열을 참조하기 위해 0으로 설정되므로 기술적으로 마침표가없는 경우 전체 문자열을 반환합니다. 나는 문자열이 null이 아닌 한 이것으로 충분하다고 생각한다. – jcolebrand

+0

@drachenstern : IndexOf가 없으면 -1을 반환하고, 하위 문자열이 전달되면 IndexOf는 ArgumentOutOfRangeException을 발생시킵니다. – casperOne

+0

@casperOne ~ tut tut, 그것의 -1'+ 1' ... 그래서 항상 0이 될 것입니다. 귀하의 코드는 내 것이 아닙니다.) – jcolebrand

4
String input = ....; 
int index = input.IndexOf('.'); 
if(index >= 0) 
{ 
    return input.SubString(index + 1); 
} 
10
string input = "America.USA" 
string output = input.Substring(input.IndexOf('.') + 1); 
3
public string RemoveCharactersBeforeDot(string s) 
{ 
string splitted=s.Split('.'); 
return splitted[splitted.Length-1] 
} 
+0

사이드 노트 : 점으로 둘러싼 문자열의 양쪽 모두를 유지해야합니다. 원하는 모든 것이 필요할 때 바람직하지만 마지막 하나만 필요하면 불필요합니다. – Joey

20

이 작업을 시도 할 수 :

string input = "lala.bla"; 
output = input.Split('.').Last(); 
+3

1 개 이상의 기간이있는 경우 문제가 발생합니다. –

+0

@MikeCole 왜? . 마지막()은 마침표 뒤에 마지막 단어를 얻게합니다. –

2

숯불이 존재하지 않는 경우, 원래의 문자열을 반환, 방법의 몇.

public static string truncateStringAfterLastChar(string input, char pivot){   
    return input.Split(pivot).Last(); 
} 
관련 문제