Прописать каждое слово в ActionScript с помощью регулярного выражения - PullRequest
1 голос
/ 19 апреля 2010

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

// replaces with x since I can't figure out how to replace with
// the found result as uppercase
public function initialcaps():void 
{
    var pattern:RegExp=/\b[a-z]/g;
    var myString:String="yes that is my dog dancing on the stage";
    var nuString:String=myString.replace(pattern,"x");
    trace(nuString);
}

Ответы [ 4 ]

4 голосов
/ 25 августа 2011

Вы также можете использовать это, чтобы избежать предупреждений компилятора.

myString.replace(pattern, function():String
            {
                return String(arguments[0]).toUpperCase();
            });
3 голосов
/ 19 апреля 2010

Попробуйте использовать функцию, которая возвращает заглавную букву:

myString.replace(pattern, function($0){return $0.toUpperCase();})

Это работает по крайней мере в JavaScript.

0 голосов
/ 24 сентября 2013

Этот ответ не выбрасывает какие-либо ошибки компилятора в строгом , и я хотел, чтобы он был немного более устойчивым, обрабатывая крайние случаи, такие как дефисы (игнорировать их), подчеркивания (обрабатывать их как пробелы) другие специальные несловесные символы, такие как косые черты или точки.

Очень важно отметить переключатель /g в конце регулярного выражения. Без этого остальная часть функции довольно бесполезна, потому что она будет адресована только первому слову, а не любым последующим.

for each ( var myText:String in ["this is your life", "Test-it", "this/that/the other thing", "welcome to the t.dot", "MC_special_button_04", "022s33FDs"] ){
    var upperCaseEveryWord:String = myText.replace( /(\w)([-a-zA-Z0-9]*_?)/g, function( match:String, ... args ):String { return args[0].toUpperCase() + args[1]  } );
    trace( upperCaseEveryWord );
}

Выход:

This Is Your Life
Test-it
This/That/The Other Thing
Welcome To The T.Dot
MC_Special_Button_04
022s33FDs

Для художников, выполняющих копирование и вставку, доступна функция готовности к отправке:

public function upperCaseEveryWord( input:String ):String {
    return input.replace( /(\w)([-a-zA-Z0-9]*_?)/g, function( match:String, ... args ):String { return args[0].toUpperCase() + args[1]  } );
}
0 голосов
/ 27 марта 2012

Просто подумал, что я бы бросил им два цента за строки, которые могут быть всеми заглавными буквами

var pattern:RegExp = /\b[a-zA-Z]/g;
myString = myString.toLowerCase().replace(pattern, function($0){return $0.toUpperCase();});
...