文字列を置換して英文以外の空白を削除する方法

いつもお世話になっております。

例えばこういう文章で「太郎 はプログラマー。Taro is a programmer.」といった文字列で
日本語の部分の空白だけを消して「太郎はプログラマー。Taro is a programmer.」のようにしたいと考えています。

まず、以下の画像のように置換アクティビティを使い、
[英数字と記号以外の文字]\s[英数字と記号以外の文字]で指定しました。
([英数字と記号以外の文字][英数字と記号以外の文字]としたいのですが…)
置換後の文字列の指定がうまくいかず、元の文字が消えてしまい、
「太 プログラマー。Taro is a programmer.」のようになってしまいます。

置換後の文字列をうまく表現する方法、または別の方法はないでしょうか。

文章を「。」や「.」でsplitして、StringArrayの繰り返しでアルファベットを含まないときは
空白文字をtrimしてから、String.joinでまた文字列にするという方法も考えたのですが、
長くなりすぎてしまいました。

どうかご教示お願い致します。

こんにちは

以下でいかがでしょうか?

System.Text.RegularExpressions.Regex.Replace(yourString,"(?<=[^A-Za-z]) +(?=[^A-Za-z])","")

同じパターンで置換アクティビティを使用しても可能かと思います。

1 Like

ありがとうございます。

置換アクティビティで表現したいことができました。
正規表現の先読みというのを使えばよかったのですね。
Regex.Replace メソッドというのもあるのも知りませんでした。
大変、勉強になりました。

1 Like

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.