Я использую сценарий powershell, чтобы проверить и посмотреть, какой java-файл в каталоге является основным java-файлом, проверив содержимое каждого файла и проверив, содержит ли он «main».Проблема в том, что когда скрипт попадает в строку метода Contains (), он возвращает false, даже когда я вижу, что при отладке содержимое моего $ javafilecontents явно имеет фразу «main».Что мне не хватает, или как мне получить Contains, чтобы вернуть true для этого случая?
Просто для тщательного тестирования я также попробовал другие небольшие ключевые слова, которые должны быть в файле, такие как $ javafilecontents.Contains ("import "), что буквально является самым первым словом в файле, но все равно возвращает false
Я обнаружил похожую ситуацию здесь: Почему string.contains () возвращает false?
Я предполагаю, что это может быть связано со слишком длинной строкой.В своем совете они говорят добавить символ @ перед длинной строкой.Я еще не проверял это, потому что я не уверен, как мне это сделать, поскольку моя длинная строка является переменной, установленной из Get-Content
Код:
foreach ($userjavafile in $userjavafiles)
{
$javafilepath = "" + $destination + "\" + $userjavafile
$javafilecontents = Get-Content -Path $javafilepath
$mybool = ($javafilecontents.Contains("main"))
if ($mybool)
{
$mainjavafile = $userjavafile
}
$spaceseparatedjavafiles += "" + $userjavafile + " "
}
$ destination - это путь к файлам, которые я создал ранее в коде.
$ javafilecontents содержит содержимое файла .java, который содержит строку "public static void main (String [] args){"
Эти два проверены на правильность, так как я вижу в отладчике, что содержимое правильно помещено в переменную.
$ mybool остается ложным, но, как мне показалось, я понимаюСодержит () это должно быть верно