Измените строку и замените ее в указанном индексе c, который я ищу, и создайте новую строку - PullRequest
2 голосов
/ 28 марта 2020

У меня есть файл SDP, и я преобразую его в строку, как показано ниже:

v=0
o=- 1443716955 1443716955 IN IP4 10.20.130.110
m=video 20000 RTP/AVP 96 // <== this line 
c=IN IP4 239.0.1.2/64
a=source-filter: incl IN IP4 239.0.1.2 192.168.0.1
a=rtpmap:96 raw/90000
a=mid:primary
m=video 20000 RTP/AVP 96 // <== this line 
c=IN IP4 239.0.1.3/64
a=source-filter: incl IN IP4 239.0.1.3 192.168.0.1

И в этой строке "m = video 20000 RTP / AVP 96" я хочу изменить '20000' до '4321' , я написал этот код ниже:

 let fileds= inputString .split(/\s+/);
    for(const field of fields) {
     if(field === "m=video") {

      }
     if (field === "m=audio") {
          var myflag = "au";
     }
    }       

и выше, оду, дайте мне следующий результат:

m=video 4321 RTP/AVP 96
m=video 4321 RTP/AVP 96

Я просто хочу измените их и замените на строку (например, на новую строку). Представьте, что мне нужен результат, подобный приведенному ниже:

v=0
o=- 1443716955 1443716955 IN IP4 10.20.130.110
m=video 4321 RTP/AVP 96 // <== this line
c=IN IP4 239.0.1.2/64
a=source-filter: incl IN IP4 239.0.1.2 192.168.0.1
a=rtpmap:96 raw/90000
a=mid:primary
m=video 4321 RTP/AVP 96 //<== this line
c=IN IP4 239.0.1.3/64
a=source-filter: incl IN IP4 239.0.1.3 192.168.0.1

Я совершенно новый в java скрипте. Как я могу его заменить? потому что, возможно, у меня есть другая строка с другим индексом "m = video", здесь "m" в строке 2, может быть, в следующей строке "m = video" в строке 3 или 4.

Могу ли я использовать 'string.startswith ('m = video') 'и где я этот код, правда, замените его на то, что я получил

EX: m = видео 4321 RTP / AVP 96

1 Ответ

2 голосов
/ 28 марта 2020

У меня есть пример:

Либо просто использовать замену всех inputString.replace(/m=video 20000/g, "m=video 4321"), где g в /m=video 20000/g означает глобальную замену (т.е. заменить все).

Или мы можем отобразить каждую строку и замените каждую строку на stringArr.map(str => str.replace(/m=video 20000/, "m=video 4321"))

Чтобы сделать ее динамической c (т.е. разрешить другие числа, кроме 20000), мы можем создать RegExp:

const inputNumberString = '20000'; //can be changed
const regex = new RegExp('m=video ' + inputNumberString, 'g');
const stringReplacedAll = inputString.replace(regex, "m=video 4321")

Или, если всегда присутствует один и тот же шаблон, но разные числа, и вы хотите сопоставить любые числа, которые вы можете использовать для сопоставления с шаблоном RegExp, например:

const inputPattern= /m=video \d{5}/g;
const stringReplacedAll = inputString.replace(inputPattern, "m=video 4321")

Чтобы изменить другие части строки, например IP, выполните что-то вроде этого:

const inputPattern= /m=video \d{5}/g;
const ipPattern = /c=IN IP4 \d{3}.\d.\d.\d\/\d{2}/g;
const stringReplacedAll = inputString
                    .replace(inputPattern, "m=video 4321")
                    .replace(ipPattern, "c=IN IP4 123.0.1.1/88");

Что соответствует любому 5 ди git числу после 'm=video ';

const inputString = 
`v=0
o=- 1443716955 1443716955 IN IP4 10.20.130.110
m=video 20000 RTP/AVP 96 // <== this line 
c=IN IP4 239.0.1.2/64
a=source-filter: incl IN IP4 239.0.1.2 192.168.0.1
a=rtpmap:96 raw/90000
a=mid:primary
m=video 20000 RTP/AVP 96 // <== this line 
c=IN IP4 239.0.1.3/64
a=source-filter: incl IN IP4 239.0.1.3 192.168.0.1`;

const inputNumberString = '20000';
const inputPattern= /m=video \d{5}/g;
const ipPattern = /c=IN IP4 \d{3}.\d.\d.\d\/\d{2}/g;
const regex = new RegExp('m=video ' + inputNumberString, 'g');
const stringReplacedAll = inputString.replace(inputPattern, "m=video 4321").replace(ipPattern, "c=IN IP4 123.0.1.1/88");

console.log(stringReplacedAll);

//OR you can do it with array and map
const stringArr = inputString.split('\n');
const stringReplacedMap = stringArr.map(str => str.replace(/m=video 20000/, "m=video 4321")).join('\n');

//console.log(stringReplacedMap);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...