質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Basic .NET

Microsoft Visual Basic .NET (VB.NET)とはオブジェクト志向のプログラム言語です。 Microsoft"s Visual Basic 6 のバージョンアップとしてみることができますが、Microsoft.NET Frameworktによって動かされています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

4回答

1974閲覧

文字列のURL部分(http://xxxxx/)の取り出し方を教えてください。

PotePui

総合スコア69

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Basic .NET

Microsoft Visual Basic .NET (VB.NET)とはオブジェクト志向のプログラム言語です。 Microsoft"s Visual Basic 6 のバージョンアップとしてみることができますが、Microsoft.NET Frameworktによって動かされています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2018/11/17 11:01

Dim stContent As String = "<p><iframe width="480" height="270" src="https://********d" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></p>"

お世話になります。
上記コードで、
Vb.netで"https://xxxxxxxxxxd"部分だけを抽出するよい方法はありますでしょうか。

  • Substring
  • IndexOf

や他のメソッド、プロパティを、色々試行錯誤してましたが、

HTML

1src=""

前後の文字列の長さも可変なため、
URL部分だけを取り出すには、どうすればいいのかが全然わからなくなりました。

参考ですが、
URLの正規表現は、

http(s)?://([\w-]+.)+[\w-]+(/[\w- ./?%&=]*)?

こちらで正しいかを判定できるようです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

x_x

2018/11/20 04:43

C#は関係あるのでしょうか?
guest

回答4

0

ベストアンサー

正規表現で次のようにして取り出すのが簡単です。

VB

1Dim stContent As String = "<p><iframe width=""480"" height=""270"" src=""https://********d"" frameborder=""0"" allow=""accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture"" allowfullscreen></iframe></p>" 2Dim match = Regex.Match(stContent, "src=""([^""]*)""") 3MessageBox.Show(match.Groups(1).Value)

投稿2018/11/18 08:22

Zuishin

総合スコア28660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

PotePui

2018/11/29 11:32

今VSで試してみたところ、 ちゃんとこちらのコードでメッセージが表示されました。 すごいです。 ありがとうございます。
guest

0

substringでわからないというのが分からないですし、substringで分からないからといって正規表現っていうのも分からないです。

こういう風にすればsubstringで取れるのでは?

vb

1 DIM str = "<p><iframe width=""480"" height=""270"" src=""https://********d"" frameborder=""0"" allow=""accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture"" allowfullscreen></iframe></p>" 2 DIM start = str.IndexOf("src=""") + 5 3 DIM tail = str.IndexOf(""" ", start) 4 Console.WriteLine (str.Substring(start, tail - start))

あとxml妥当である必要はありますが(今回のだとallowfullscreenがダメなので一部書き変えてます)、LinqToXmlでやるのがいいのでは?
(sgmlreaderとかをつかうと安全にhtmlからxmlになりそうな気がする)

vb

1 DIM htmlStr = "<p><iframe width=""480"" height=""270"" src=""https://********d"" frameborder=""0"" allow=""accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture; fullscreen""></iframe></p>" 2 Dim doc As XDocument = XDocument.Parse(htmlStr) 3 Dim url = doc.Descendants().First(Function(x) x.Attributes().Any(Function(a) a.Name = "src") ).Attribute("src").Value 4 Console.WriteLine(url) 5

投稿2018/11/19 09:34

papinianus

総合スコア12705

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

XMLかと思いましたが違うようでしたので、String.Splitを使って空白で分割し、String.StartsWithを使って"src"で始まる要素を探すのはどうでしょうか。
String.Split Method
String.StartsWith Method

投稿2018/11/18 04:12

Gurz1019_MP

総合スコア196

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

URIクラスをどうぞ

URLを解析する

投稿2018/11/17 13:20

y_waiwai

総合スコア87747

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2018/11/29 10:57

これで取り出せますか?
PotePui

2018/11/29 10:57

お返事遅れて申し訳ございません. すごく勉強になりました。 特に、こちらのURIクラスを使用してのって初めて見たので、 目に鱗でした。 どれもいいと思いますが、 .NETのバージョンは最新のでも問題ないので、 こちらのURIクラスで、開発したいと思います!
Zuishin

2018/11/29 11:04

これって URL を抽出するクラスじゃなくて抽出済みの URL を分解するクラスなんですが、質問変わってません?
PotePui

2018/11/29 11:13

そうですね・・・ いまVisualStudioで試してみましたが、 これだと主旨とちょっと違ってますね。 おっしゃっていただいた通り、 欲しいのは、URLの抽出でしたので。 ご指摘ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問