kiki1
1
いつも大変お世話になっております。
Webで取得した文字列から一部の文字列を取り除きたいです。
下記のような文字列から日付だけを残したいでのすが、スペースのようなものが含まれています。
「 令和05-12-08 05:00 PM」
Replace関数でスペースを取り除いてもできませんでした。
書き込みをしてみると、
「“message”: " ¥n¥t¥t¥t¥t令和05-12-15 01:00",」
と表示されました。
¥、n、t、それぞれをReplaceで取り除こうとしても削除されません。
また、Split関数を使って半角スペースで区切ったにも関わらず、
「01:00」が含まれます。
お気づきの点ありましたらご教授ください。
vrdabberu
(Varunraj Dabberu)
2
Hi @kiki1
Input= "Reiwa 05-12-08 05:00 PM"
Output= System.Text.RegularExpressions.Regex.Match(Inupt,"\d+.*").Value.Split(" ")(0)
Regards
Yoichi
(Yoichi)
3
こんにちは
取得したい結果は08でしょうか?
そうであれば以下で取得できます。
System.Text.RegularExpressions.Regex.Match("令和05-12-08 05:00 PM","(?<=\d+-\d+-)\d+").Value
05-12-08であれば以下になります。
System.Text.RegularExpressions.Regex.Match("令和05-12-08 05:00 PM","\d+-\d+-\d+").Value
kiki1
4
アドバイスありがとうございます。
取り出したいのは、「令和05-12-08」なのですが、どのようになりますか?
ちなみに、「05:00」の場合はどのようになるのでしょう?
Yoichi
(Yoichi)
5
以下いかがでしょうか?
取り出したいのは、「令和05-12-08」なのですが、どのようになりますか?
System.Text.RegularExpressions.Regex.Match("令和05-12-08 05:00 PM","\w+\d+-\d+-\d+").Value
ちなみに、「05:00」の場合はどのようになるのでしょう?
PMが不要であれば
System.Text.RegularExpressions.Regex.Match("令和05-12-08 05:00 PM","\d+:\d+").Value
vrdabberu
(Varunraj Dabberu)
6
Hi @kiki1
Check out the below way:
Input= "Reiwa 05-12-08 05:00 PM"
Output= System.Text.RegularExpressions.Regex.Match(Input, "[A-Za-z]+\s+\d.*").Value.Trim()
Message Box-> String.Join(" ", Output.Split(" "c).Take(2))
Input= "Reiwa 05-12-08 05:00 PM"
Output= System.Text.RegularExpressions.Regex.Match(Input, "[A-Za-z]+\s+\d.*").Value.Trim()
Message Box-> String.Join(" ", Output.Split(" "c).Skip(2))
Regards
kiki1
7
早速ありがとうございます。
最終的に令和05年12月08日など、Excelで日付認識されるような形に変換したいのですが、簡単に変更できますか?
Split関数で「-」で区切って、それぞれの文字列と「年月日」の文字を組み合わせようと考えていたのですが。
また、「05:00 PM」は、「17:00」の形に簡単に変換できるのでしょうか?
vrdabberu
(Varunraj Dabberu)
8
Hi @kiki1
You can give “HH:mm” this will convert to 5:00 PM to 17:00.
If you have any specification what you want to do exactly please provide the input and required output.
Regards
Yoichi
(Yoichi)
9
こんにちは
一旦DateTime型に変換すると、後のハンドリングが楽なのでそのようにした方が良いかと思います。
strDate = "令和05-12-08 05:00 PM"
ci = New System.Globalization.CultureInfo("ja-JP")
ci.DateTimeFormat.Calendar = New System.Globalization.JapaneseCalendar()
varDateTime = DateTime.ParseExact(strDate.Replace("AM","午前").Replace("PM","午後"), "ggyy-MM-dd hh:mm tt",ci)
としておけば、DateTime型の変数から任意のフォーマットに出力できます。
varDateTime.ToString("ggyy/MM/dd HH:mm:ss",ci)
サンプル
Sample20231227-3.zip (2.7 KB)
kiki1
10
ご丁寧にありがとうございます。
まず「05:00 PM」を取り出すにはどのようなコードになりますか?
ここは、AMとなる可能性もあります。
Yoichi
(Yoichi)
11
文字列から直接取り出すなら
System.Text.RegularExpressions.Regex.Match(strDate,"\d+:\d+.*")
DateTIme型変数に変換してから取り出すなら
varDateTime.ToString("hh:mm tt")
kiki1
13
教えてくださりありがとうございます。
こちらの場面でエラーが表示されます。

お気づきの点ありましたらご教授ください。
Yoichi
(Yoichi)
14
まずは右辺の式全体がどうなっているかと、cultureinfoを正しく作成できているかの確認になるかと思いますので、このあたりを共有いただけますでしょうか。
kiki1
15
教えていただいた通り、入力したつもりなのですが、不備があれば教えてください。
Sample20231228.zip (2.7 KB)
Yoichi
(Yoichi)
16
原因は、文字列中にある空白が通常の空白ではなく、non-breaking spaceとなっているためです。
(見た目ではわかりませんが)
strDate = System.Text.RegularExpressions.Regex.Replace(strDate.Replace("AM","午前").Replace("PM","午後"),"\s+"," ").Trim()
としてから
DateTime.ParseExact(strDate, "ggyy-MM-dd hh:mm tt",ci)
としてみてください
kiki1
17
無事解決できました。
どうもありがとうございました 
system
(system)
Closed
18
This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.