Я только что предложил следующее решение:
func generateMyString(string: String) -> String {
let percentage = 0.25
let numberOfCharsToReplace = Int(floor(Double(string.count) * percentage))
let generatedString = stride(from: 0, to: string.count, by: 1).map { index -> String in
return string[string.index(string.startIndex, offsetBy: index)] == " " ? " " : "_"
}.joined()
var newString = generatedString
for i in generateNumbers(repetitions: numberOfCharsToReplace, maxValue: string.count - 1) {
var newStringArray = Array(newString)
newStringArray[i] = Array(string)[i]
newString = String(newStringArray)
}
return newString
}
func generateNumbers(repetitions: Int, maxValue: Int) -> [Int] {
guard maxValue >= repetitions else {
fatalError("maxValue must be >= repetitions for the numbers to be unique")
}
var numbers = [Int]()
for _ in 0..<repetitions {
var n: Int
repeat {
n = Int.random(in: 1...maxValue)
} while numbers.contains(n)
numbers.append(n)
}
return numbers
}
Вывод:
let str = "Hello playground"
print(generateMyString(string: str)) // ___lo _l_______d
Обходное решение для этого должно использовать Debug|Attach для опции Process и присоединение к процессу aspnet_wp.exe (или эквивалентный). Это не отвечает на вопрос того, как зафиксировать 'стандартную' отладку все же.
На веб-сайте каждая страница обычно создается как ее собственный блок на лету.
При изменении кода на такой странице, исходная страница больше не соответствует существующему блоку. Точка останова затем выглядит странной. Не действительно проблема, когда страница на самом деле выполняет свой восстановленный и точки останова, "идет тело" снова.
В свойствах пулов приложений диспетчера IIS попробуйте установить максимальное количество рабочих процессов равным 1.
Мне неловко признать, что я вырвал себе волосы из-за этой проблемы на пару дней. Иногда отладка работала, а иногда - нет. Обходной путь процесса присоединения, о котором упоминал Джон Нолан, оказался для меня успешным, и именно тогда я заметил, что у меня запускалось несколько процессов w3wp.exe, когда я нажимал F5 для отладки. Установка этого значения в 1 позволяет VS2008 каждый раз выбирать правильный файл w3wp.exe.