在Powershell中截断url

时间:2018-01-20 04:57:04

标签: powershell

Powershell的:

帮助:我想截断这个网址:

https://thoudamchitaranjan.blogspot.in/2017/12/merry-christmas-and-still-merry-shes-still-so-beautiful.html

进入这个:

 merry-christmas-and-still-merry-shes-still-so-beautiful

并将其存储到变量中。

我尝试过通配符,但不会工作。我试过更换" /"换行"`n"并尝试阅读最后一行。我也成功尝试了下面的代码。 我使用和工作的代码是:

$rightPart="https://thoudamchitaranjan.blogspot.in/2017/12/merry-christmas-and-still-merry-shes-still-so-beautiful.html"
$rightPart=$rightPart.Replace(".html","")
while($rightPart -imatch "/"){
$pos = $rightPart.IndexOf("/")
$rightPart = $rightPart.Substring($pos+1)
}
Write-Output "String is: $rightPart"

但我想要一个更好的方法。 感谢您的帮助。

5 个答案:

答案 0 :(得分:3)

您可以使用URI类查询URL,并使用FileInfo构造函数来获取文档的基本名称,而不是对字符串解析杂技进行查询。

$url = "https://thoudamchitaranjan.blogspot.in/2017/12/merry-christmas-and-still-merry-shes-still-so-beautiful.html"

([IO.FileInfo]([System.Uri]$url).Segments[-1]).BaseName

这有什么好处,它将获取URL中的最后一个文件名,无论它是以.htm / .html / .asp / .aspx / etc结尾,还是你有一个斜杠" /& #34;或者20。

另一种方法是使用Split-Path并抓取leaf对象并抓取FileInfo对象的BaseName。

([IO.FileInfo](Split-Path $url -Leaf)).BaseName

答案 1 :(得分:2)

就这样做:

$URL="https://thoudamchitaranjan.blogspot.in/2017/12/merry-christmas-and-still-merry-shes-still-so-beautiful.html"
[System.IO.Path]::GetFileNameWithoutExtension($URL)

答案 2 :(得分:1)

你的意思是这样的吗?

$url = 'https://thoudamchitaranjan.blogspot.in/2017/12/merry-christmas-and-still-merry-shes-still-so-beautiful.html'
$arr = $url -split '/'
$truncatedVar = ($arr[$arr.Length-1]).Substring(0, $arr[$arr.Length-1].IndexOf('.'))

答案 3 :(得分:1)

您还可以使用-replace运算符的正则表达式。

$url = 'https://thoudamchitaranjan.blogspot.in/2017/12/merry-christmas-and-still-merry-shes-still-so-beautiful.html'
$truncatedVar = $url -replace ".*/(.*)\.html",'$1'

.*/匹配任意字符的零个或多个,直到最后一个斜杠

(.*)\.html匹配任何字符的零个或多个,直到.html字符串。括号使所有匹配的文本被捕获到变量。

'$1'-replace运算符的第二个参数,告诉它用什么来替换匹配的文本。在这种情况下,$1会评估(.*)

捕获的文本

/编辑修复双引号,也转义了'。'在.html

答案 4 :(得分:1)

补充Ricc Babbitt's helpful answer

PowerShell 核心 - 但遗憾的是,不是Windows PowerShell - 支持 Split-Path -LeafBase ,允许在单个操作中提取基本文件名(没有扩展名的文件名):

# PowerShell *Core* only
PS> Split-Path -LeafBase "https://example.org/shes-still-so-beautiful.html"
shes-still-so-beautiful