2013-06-14 6 views
2

단일 문자열에서 목록에 포함 된 데이터를 제거하는 우아한 방법을 찾으려고합니다. 간단한 전체 예제는 그 아래에 표시됩니다 않습니다 하지 일 :목록에있는 문자열 부분을 제거하십시오.

private string removeWebSuffixes() 
{ 
    string siteName="someSite.com"; 

    List<string> siteNames=new List<string>{siteName}; 
    List<string> domainSuffixes=new List<string>{".net",".com",".gov"}; 

    domainSuffixes.ForEach(x=>siteName.Replace(x,"")); 

    return siteName;//actually, should return result of siteName.replace statement 
} 
나는 문이 아무것도 값을 반환하지 않습니다 대체 때문에이 예제가 작동하지 않을 수 있다고 생각

,하지만 난 그것을 명확하게 전달 생각하기 때문에 내가 그것을 포함했다 내가 성취하려고하는 것.

나는 이것을하기 쉽습니다 (그리고 나는 foreach 루프를 의미하지는 않습니다). 그러나 나는 그것을 보지 않을 것입니다. 아직.

+0

제목을 편집했습니다. "[제목에"태그 "가 포함되어 있어야합니까?] (http://meta.stackexchange.com/questions/19190/)"합의가 "아니오, 그렇지 않아야합니다"로 표시되어야합니다. –

답변

3

Replace()은 실제로 문자열을 변경하지 않습니다. 여기

domainSuffixes.ForEach(x => siteName = siteName.Replace(x, "")); 
0

나는 저스틴의 응답보기 전에 해낸있다 : 당신은 당신이 변화를 유지하려는 경우 원래의 문자열로 반환 값을 쓸 필요가

private string removeDomainSuffix(string siteName) 
{ 
    List<string> siteNames=new List<string>(){siteName}; 
    List<string> domainNames=General.GetWebDomains(); 

    var truncated= 
    (
     from sites in siteNames 
     from suffixes in domainNames 
     select new { results=(sites.Replace(suffixes,"")) } 
    ).OrderBy(x=>x.results.Length).Take(1); 

    foreach(var v in truncated) 
     return (string.Format("{0}",v.results)); 

    return siteName; 
} 

그것은 작동을하지만, 그것은 그의 것만 큼 좋지는 않습니다. 그리고 루프에 의지하지 않고 var에서 단일 문자열을 얻는 방법을 알 수 없습니다.

희망이 솔루션을 게시해도 문제가되지 않을 것입니다. 나는 저스틴을 대답으로 표시 할 것이다.

관련 문제