我有一个字符串变量,类似于"thisMagazineRoomcode"。我需要把这个从"R"——最后一个大写字母——切到字符串的末尾。切片方法不适合我,因为我有不同的变量,如"thisMagazineName"或"thisMagazineSquare",大写字母后的字母数量不同。
您可以使用 String#replace
方法。
console.log(
'thisMagazineRoomcode'.replace(/[A-Z][^A-Z]*$/, '')
);
您可以使用RegExp.exec()或String.match()
var stringValue = "thisMagaizineRoomcode";
re = /[A-Z][^A-Z]*$/;
re.exec(stringValue);
stringValue.match(re);
这将输出一个数组,但是如果您需要它作为字符串,您可以这样做:
var result = re.exec(stringValue);
return result[0];
试试这个
/** check whether the input is capital letter or not
*/
function isCapitalLetter(c) {
return c >= 'A' && c <= 'Z'
}
/** revert string */
function revertString(str) {
return str.split('').reverse().join('')
}
/** cut last capital letter till the end */
function cutLastWord(str) {
const revertStr = revertString(str)
for (let i = 0; i < revertStr.length; i++) {
if (isCapitalLetter(revertStr[i])) {
const revertResult = revertStr.substr(0, i + 1)
const result = revertString(revertResult)
console.log(result)
break
}
}
}
/** run sample data */
cutLastWord('HelloWorld') // World
cutLastWord('Hello') // Hello
cutLastWord('IAmHero') // Hero
下面是完成这项工作的函数
function cutStr(str) {
var regex = /[A-Z][^A-Z]*$/;
return str.split(regex).join('');
}
console.log(cutStr('thisIsRedmond')); // output 'thisIs'