我有一个字符串$var1 = [string]"Weiß Steht Für Schwarz"
正如您所看到的,我正在尝试使用下划线_
替换这个奇怪的ascii代码。我想做的事情是:$var1=$var1 -replace('[(ß)\(ü)\ ]','_')
但结果如下:Wei_______Steht________r_S_hwarz
通常我会说这对我的目的是好的,但它也取代了我的正常“F”和“c”。如果在即将到来的字符串中有更多的ascii代码,我也想扩展我的正则表达式。是否有可能只替换一系列字母而不替换单个字母?
答案 0 :(得分:1)
让我们概括一下:
$var1=$var1 -replace('&#x[\dA-F]{2};','_')
输出:
Wei_ Steht F_r Schwarz
如果您想要替换空格,那么:
$var1=$var1 -replace('&#x[\dA-F]{2};|\s','_')
输出:
Wei__Steht_F_r_Schwarz
您可能想要以下解决方案:
$var1 = "Weiß Steht Für Schwarz"
[System.Reflection.Assembly]::LoadWithPartialName("System.Web")
$var1 = [System.Web.HttpUtility]::HtmlDecode($var1)
$var1 = $var1.Replace('ä', 'ae').Replace('ö', 'oe').Replace('ü','ue').Replace('Ä', 'Ae').Replace('Ö', 'Oe').Replace('Ü','Ue').Replace('ß', 'ss')
$var1 = $var1 -replace('\s', '_')
输出:
Weiss_Steht_Fuer_Schwarz
答案 1 :(得分:0)
你想要做的是:
<?PHP
$var1 = "Weiß Steht Für Schwarz";
echo preg_replace("/(ß|ü)/", "_", $var1);
输出:Wei_ Steht F_r Schwarz
更好的例子,使其更通用:
<?PHP
$var1 = "Weiß Steht Für Schwarüz";
echo preg_replace("/(&#\w{3};)/", "_", $var1);
输出:Wei_ Steht F_r Schwar_z
答案 2 :(得分:0)
字符串: var1 = [string]"Weiß Steht Für Schwarz"
正则表达式: /&#\w+;/g
将匹配任何ASCII代码的字符串中的多次出现,例如上面的ß
。
编辑:
看起来你使用的是Powershell,但是我希望我的RegEx可以工作,虽然我不知道它的语法,但我可以通过你的代码猜测下面的代码应该符合你的要求:
$var1=$var1 -replace(/&#\w+;/g,'_')