Я создаю веб-приложение, которое позволяет пользователю запускать функцию x количество раз и измерять вывод, используя Rosyln для компиляции в памяти, однако, поскольку его чтение из строки с использованием кавычек, новых строк и т. Д. c все использует экранировать символы, которые не компилируются.
Мой код на стороне клиента:
runCode() {
let stripped = JSON.stringify(
this.code.replace(/\/\*[\s\S]*?\*\/|\/\/.*/g, "")
);
stripped = stripped.replace(/\\n|\\t|\\r/gm, "");
let api = this.$store.getters.api + "/Code";
this.$http.post(api, { code: stripped }).then(res => {
let data = res.data;
}}
, который удаляет новые строки и т. Д. c, однако, возьмите этот кодовый блок как пример ввода (оператор using для вывода вводится после отправки ):
using System;
namespace CodeEnv{
//Don't change the class name
public class SandBox{
public void Run(){
Output.WriteLine("Hello!");
}
}
}
Когда это достигает API, это выглядит так:
"\" с использованием System; пространство имен CodeEnv {publi c class SandBox {publi c void Run ( ) {Output.WriteLine (\\ "Hello! \\");}}} \ ""
Что не компилируется из-за всех символов "\", как я могу удалить все из них?
решено ::
используется code.Replace("\\\"", @"""");
для замены их кавычками