поиск строки и извлечение процента в виде целого числа - PullRequest
0 голосов
/ 28 сентября 2011

Итак, после того, как мой скрипт запустил командный файл, он выполняет команду оболочки:

adb shell dumpsys cpuinfo > sample.txt

, который затем, если вы откроете sample.txt, вы увидите это:

0% 71/msm_battery: 0% user + 0% kernel <br>
0% 79/kondemand/0: 0% user + 0% kernel <br>
0% 115/rild: 0% user + 0% kernel <br>
0% 118/gpsd: 0% user + 0% kernel <br>
0% 375/com.android.systemui: 0% user + 0% kernel <br>
0% 415/com.nuance.nmc.sihome: 0% user + 0% kernel <br>
0% 498/com.google.process.gapps: 0% user + 0% kernel / faults: 6 minor <br>
0% 1876/com.wssyncmldm: 0% user + 0% kernel <br>

Что я пытаюсь сделать, так это если пользователь захочет com.google.process.gapps, он вернет 0% от текстового файла. Однако этот текстовый файл обновляется каждую секунду, и com.google.process.gapps не всегда будет равен 0% и не всегда будет в одном и том же месте. Я выяснил, как искать com.google.process.gapps и возвращать всю строку в виде строки, но я пока не понял, как искать весь файл и просто возвращать первые 0% как просто 0 и как целое число вместо строки.

Не беспокойтесь о повторении каждой второй вещи, которую я уже запрограммировал, все, что мне нужно, это выяснить, как написать массив поиска и вернуть первое значение как int

Кто-нибудь может указать мне правильное направление?

........................................

Я не мог понять, что добавить комментарий, поэтому я просто отправляю сюда.

Так что, если я выйду из вашего кода, я получу это:

    Dim line As String = TextBox1.Text 'where textbox1 could equal com.google, etc.
    Dim Matches As MatchCollection = Regex.Matches(line, "[0-9]+%")
    For Each Match As Match In Matches
        Dim Percent As Integer = Integer.Parse(Match.Value.TrimEnd("%"c))
        TextBox9.Text = Percent
    Next

Я знаю, что мне не хватает одной ключевой части, то есть загрузки всего текстового файла.

может быть что-то вроде:

Dim searchfile As String = IO.File.ReadAllLines ("C: \ sample2.txt")

но тогда как бы я Regex.matches (строка, "[0-9] +%") в файле поиска 'C: \ sample2.txt

Еще раз спасибо за вашу помощь

1 Ответ

0 голосов
/ 28 сентября 2011

Редактировать: Чтобы добавить к исправленному вопросу ...

Самый простой способ - использовать RegEx.Этот код извлекает каждое целое число, за которым следует символ% в строке как целое число.

Эта функция принимает два параметра.Первым является поисковый термин, такой как «com.google», который определяет строку для чтения.Если термин не найден, функция выдает исключение ArgumentException.Второй параметр - это процентное значение для чтения.Используйте 0 для первого, 1 для второго или 2 для третьего.

Imports System.IO
Imports System.Text.RegularExpressions

Public Class Form1

    Public Function GetPercentage(term As String, percentage As Integer) As Integer

        ' Read all lines from the file.
        Dim lines As String() = File.ReadAllLines("C:\sample2.txt")

        ' Find the appropriate line in the file.
        Dim line As String
        Using reader As New StreamReader("C:\sample2.txt")
            Do
                line = reader.ReadLine()
                If line Is Nothing Then Throw New ArgumentException("The term was not found.")
                If line.Contains(term) Then Exit Do
            Loop
        End Using

        ' Extract the percentage value.
        Dim Matches As MatchCollection = Regex.Matches(line, "[0-9]+%")
        Dim Match As Match = Matches(percentage)
        Dim Text As String = Match.Value.TrimEnd("%"c)
        Return Integer.Parse(Text)
    End Function
End Class
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...