如何切割特定的字符串?

时间:2019-06-10 09:34:12

标签: powershell

我有一个不同长度的字符串。我想在字符串中剪切一个特定的单词。 请帮忙,我是PowerShell的新手。

我尝试了这段代码,仍然不是我所需要的。

$String = "C:\Users\XX\Documents\Data.txt"
$Cut = $String.Substring(22,0)
$Cut

我期望我可以返回单词Data

5 个答案:

答案 0 :(得分:4)

假设字符串始终是相同的格式(即,以文件名结尾的路径),那么有很多方法可以做到这一点,例如使用正则表达式。这是一种不太常用的方法:

# Define the path
$filepath = "C:\Users\XX\Documents\Data.txt"

# Create a dummy fileinfo object
$fileInfo = [System.IO.FileInfo]$filePath

# Get the file name property
$fileInfo.BaseName

当然,您可以一步完成所有操作:

([System.IO.FileInfo]"C:\Users\XX\Documents\Data.txt").BaseName

答案 1 :(得分:2)

如果该路径是现有路径,则可以使用

File "C:/Users/username/Desktop/pandas/parser.py", line 6, in <module>
    nessus_filtered = nessus.merge(patrol, how='left', left_on=[0], right_on=[0])
  File "C:\Python37\lib\site-packages\pandas\core\frame.py", line 6868, in merge
    copy=copy, indicator=indicator, validate=validate)
  File "C:\Python37\lib\site-packages\pandas\core\reshape\merge.py", line 47, in merge
    validate=validate)
  File "C:\Python37\lib\site-packages\pandas\core\reshape\merge.py", line 529, in __init__
    self.join_names) = self._get_merge_keys()
  File "C:\Python37\lib\site-packages\pandas\core\reshape\merge.py", line 833, in _get_merge_keys
    right._get_label_or_level_values(rk))
  File "C:\Python37\lib\site-packages\pandas\core\generic.py", line 1706, in _get_label_or_level_values
    raise KeyError(key)

否则

(Get-Item $String).BaseName

答案 2 :(得分:1)

在该特定示例中,最简单的方法是使用Substring(startPosition,length)提取文件名,而您可能希望使用如下所示的文件:

(("C:\Users\XX\Documents\Data.txt".split("\\"))[-1].Split("."))[0]

说明:

("C:\Users\XX\Documents\Data.txt".split("\\"))[-1]

该部分用\分隔路径并返回最后一项(顺便说一下,转义它不是强制性的,因此可以使用.split("\")代替.split("\\"))。从那里您会收到Data.txt,因此您必须分开名称和扩展名。您可以通过除以.并选择返回的第一个元素来完成此操作

答案 3 :(得分:1)

根据您的输入,有很多方法可以实现-

方法1-使用子字符串函数进行硬编码。

$String = "C:\Users\XX\Documents\Data.txt"
$Cut = $String.Substring(22,4)
$Cut

以上方法仅适用于单个输入,但对于不同长度的多个输入将变得难以管理。

方法2-使用split方法

$String = "C:\Users\XX\Documents\Data.txt"
$cut = $String.Split("\")[-1].split(".")[0]
$cut

Split方法会将字符串拆分为子字符串。索引[-1]将返回split方法返回的最后一个值。 第二步是从单词Data返回单词Data.txt

方法3-如果输入的是文件路径

$string = Get-ChildItem $env:USERPROFILE\Desktop -File | select -First 1
$Cut = $String.BaseName

有关方法3 here的更多信息。

答案 4 :(得分:0)

如果可以使用Powershell 6 - SplitPath

#Requires -Version 6.0
Split-Path $String -LeafBase