質問
文字列=" 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);
スペースがセパレーターであると仮定できる場合は、
string full
char [] delimiterChars = {''}; //より多くのdelimを指定できるように使用されます string [] words = full.Split(delimiterChars、1); //スペースで単語を1つだけ分割します
string result = words [0] //これがアクセス方法です
抽出によって削除を意味する場合、Replaceメソッドを使用できます
var result = str.Replace(" .com&quot ;,"");
Splitメソッドの使用について質問されたことは知っていますが、それが最適なルートかどうかはわかりません。文字列を分割すると、少なくとも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
これはサブドメインを考慮に入れます。
正規表現を使用するのが最適なオプションですが、Splitを使用する場合は
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);
}
}