RegEx: Разделение строки на две части в $ - PullRequest
1 голос
/ 08 июля 2011

У меня есть строка, которую я импортирую в приложение javascript. Он состоит из этого:

Текст здесь (часть текста в скобках) $ Цена

Я хотел бы разделить эту строку на три строки (начало, скобка и цена).

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

Спасибо!

Ответы [ 4 ]

2 голосов
/ 08 июля 2011

Без регулярных выражений это работает:

var part1 = mystring.substring(0, mystring.indexOf('('));
var part2 = mystring.substring(mystring.indexOf('(') + 1, mystring.indexOf(')'));
var part3 = '$' + mystring.split('$')[1];

Пример / демо: http://jsfiddle.net/fallen888/6EU3W/3/

Обновление :

var part1 = null;
var part2 = null;
var part3 = null;

if (mystring.indexOf('(') >= 0 && mystring.indexOf('(') > 0) {
    part1 = mystring.substring(0, mystring.indexOf('('));
    part2 = mystring.substring(mystring.indexOf('(') + 1, mystring.indexOf(')'));
    part3 = '$' + mystring.split('$')[1];
}
else {
    var parts = mystring.split('$');
    part1 = parts[0];
    part2 = '$' + parts[1];
}
1 голос
/ 08 июля 2011
var str = "Text here (some text in parenthesis) $33.55";
var matches = str.match(/(.+) (\(.+\)) (\$.+)/);

Дает вам:

["Text here (some text in parenthesis) $33.55", "Text here", "(some text in parenthesis)", "$33.55"]

matches[1], matches[2] и matches[3] содержат то, что вы хотите.

1 голос
/ 08 июля 2011
var match = "Text here (some text in parenthesis) $Price".match(/(.+)(\(.+\))(.+)/);
match[1], match[2], match[3];

Или используя split (см. https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/split):

var split12 = "Text here (some text in parenthesis) $Price".split('(');
var split1 = split12[0];
var split23 = split12[1].split(')');
var split2 = '(' + split23[0] + ')';
var split3 = split23[1];

Лучше выучить некоторые регулярные выражения, не так ли?

http://jsfiddle.net/K9Cxe/

0 голосов
/ 08 июля 2011

Попробуйте это:

([\ w \ s] +) (([\ w \ s] +)) (\ $ \ w +)

Предполагая, что при произнесении текстаАлфавитно-цифровая.Если вы хотите разрешить знаки препинания, измените [\w\s], чтобы включить их.(например, чтобы включить запятую -> [\w\s,]).

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