Member 10974007 Ответов: 1

Как удалить специальные символы и джонки


Public Function RemoveJunk(ByVal Readlinevalue As String) As String

Readlinevalue = Readlinevalue.Replace(vbLf, String.Empty)

Regex.Replace(Readlinevalue, "[^A-Za-z0-9\-/]", String.Empty)

Return Readlinevalue

    End Function


Что я уже пробовал:

ну я старался изо всех сил но мусор существует и невидим можете ли вы улучшить этот код
что-то вроде ascii или может сделать лучшую работу ?

1 Ответов

Рейтинг:
1

OriginalGriff

Хм. Вы понимаете, что Regex. Replace не изменяет исходный ввод, а вместо этого возвращает значение?
Регулярное выражение.Метода Replace (Строка, Строка, Строка) (Система.Текст.RegularExpressions)[^]
Так что попробуй:

Public Function RemoveJunk(ByVal Readlinevalue As String) As String
    Readlinevalue = Regex.Replace(Readlinevalue, "[^A-Za-z0-9\-/]", String.Empty)
    Return Readlinevalue
End Function


Member 10974007

видите ли, я не замечаю, что долгое время пользовался этим кодом .
может еще какое-нибудь улучшение сделано к тому же

OriginalGriff

Вы имеете в виду производительность?
Вероятно, регулярное выражение не особенно эффективно, но вам, вероятно, придется провести некоторые тесты производительности, чтобы проверить эффективность различных возможностей.
Есть совет, который я написал на подобную тему несколько лет назад:
http://www.codeproject.com/Tips/312312/Counting-Lines-in-a-String
Который выполняет вычисления производительности для различных способов проверки новых строк - что во многих отношениях является аналогичной проблемой-и дал некоторые удивительные результаты.
Он написан на C#, а не на VB, но его довольно легко понять (и у него есть "резюме", которое не нуждается в знании кода), и, возможно, его стоит прочитать. (и вы можете переводить между этими двумя языками с помощью
http://converter.telerik.com/
в любом случае).
В конечном счете, вам нужно будет написать несколько разных фрагментов кода и использовать секундомер, чтобы сравнить их, чтобы знать наверняка.