У меня была аналогичная проблема в прошлом, в моем случае imbue
и sync_with_stdio
сделали трюк. Попробуйте следующее:
#include <iostream>
#include <locale>
#include <string>
using namespace std;
int main() {
ios_base::sync_with_stdio(false);
wcin.imbue(locale("en_US.UTF-8"));
wcout.imbue(locale("en_US.UTF-8"));
wstring s;
wstring t(L" la Polynésie française");
wcin >> s;
wcout << s << t << endl;
return 0;
}
foo.replace(/,([^,]*)$/, ' and $1')
используйте привязку $ (конец строки), чтобы указать вам свою позицию, и найдите шаблон справа от индекса запятой, который не содержит никаких дополнительных запятых.
Изменить:
Вышеуказанное работает точно для определенных требований (хотя строка замены произвольно свободна), но на основе критики из комментариев ниже лучше отражает дух первоначального требования.
foo.replace(/,\s([^,]+)$/, ' and $1')
шаблон поиска regex \ s ([^,] +) $
Line1: If not, sdsdsdsdsa sas ., sad, whaterver4
Line2: If not, fs sadXD sad , ,sadXYZ!X
Line3: If not d,,sds,, sasa sd a, sds, 23233
Поиск с помощью паттернов находит Line1: whaterver4 Line3: 23233
Пока не находит Line2: sadXYZ! X Что отсутствует пробел
result = dialog.replace(/,\s(\w+)$/, " and $1");
$1
относится к первой группе захвата (\w+)
соответствия.
\w
, поскольку всплеск сделал, поскольку он более инклюзивный, например: jsbin.com/utedu/2 – T.J. Crowder 30 September 2010 в 11:04test1, test2,
и создает для негоtest1, test2 and
. Также он вставляет избыточный символ пространства для исходной строки ввода, потому что он забывает совместить символ пробела после,
. – splash 30 September 2010 в 11:50Error: unexpected '/' in "foo.replace(/"
. – MERose 20 November 2015 в 14:53