문제
문자열 = "Google.com 220 USD 3D 19H"가 있습니다.
".com"부분 만 추출하고 싶습니다 .......
이 결과를 얻기 위해 분할 문자열 메소드를 조작하는 가장 쉬운 방법은 무엇입니까?
해결책
도메인 이름을 추출하고 싶거나 tld 문자열의 일부. 이것은 작업을 수행해야합니다.
var str = "google.com 220 USD 3d 19h";
var domain = str.Split(' ')[0]; // google.com
var tld = domain.Substring(domain.IndexOf('.')) // .com
다른 팁
대체 아이디어
string str = "google.com 220 USD 3d 19h";
string match = ".com";
string dotcomportion = str.Substring(str.IndexOf(match), match.Length);
공간이 분리기라고 가정 할 수 있다면
문자열 가득
char [] delimiterchars = { ''}; // 더 많은 delims 문자열 [] words = full.split (delimiterchars, 1)를 지정할 수 있도록 사용되었습니다. // 공간으로 하나의 단어 만 나눕니다
문자열 결과 = 단어 [0] // 이것이 액세스하는 방법입니다.
Extract로 제거를 의미하는 경우 교체 방법을 사용할 수 있습니다.
var result = str.replace ( ". com", "");
분할 방법을 사용하는 것에 대해 물었지만 그것이 최고의 경로인지 확실하지 않습니다. 문자열을 분할하면 즉시 무시되는 적어도 5 개의 새로운 줄을 할당 한 다음 GC가 풀릴 때까지 기다려야합니다. 문자열에 인덱싱을 사용하고 필요한 것을 꺼내는 것이 좋습니다.
string str = "google.com 220 USD 3d 19h";
int ix = str.IndexOf( ' ' );
int ix2 = str.IndexOf( '.', 0, ix );
string tld = str.Substring( ix2, ix - ix2 );
string domain = str.Substring( 0, ix );
최상위 도메인을 원한다고 가정합니다.
string str = "google.com 220 USD 3d 19h";
string tld = str.Substring(str.LastIndexOf('.')).Split(' ')[0];
Console.WriteLine(tld);
산출:
.com
이것은 하위 도메인을 고려합니다.
regex를 사용하는 것이 가장 좋은 옵션이지만 분할을 사용하려면
var str = "google.com 220 USD 3d 19h";
var str1 = str.Split(' ')[0];
var str2 = str1.Split('.')[0];
Console.WriteLine(str1.Replace(str2, string.Empty));
나는 당신이 사용하고 싶은 세상의 이유를 생각할 수 없습니다. String.Split
이 목적을 위해. 이 문제는 정규 표현으로 가장 잘 해결됩니다.
다음은 방법을 보여주는 작은 프로그램입니다.
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
String foo = "google.com 220 USD 3d 19h";
Regex regex = new Regex(@"(.com)", RegexOptions.IgnoreCase);
Match match = regex.Match(foo);
if (match.Success)
Console.WriteLine(match.Groups[1].Value);
}
}