如何在 TypeScript 中反转字符串?
本教程演示了在 TypeScript 中反转字符串的多种方法。乍一看,反转字符串的问题很简单,但如果有人要求你解释在 TypeScript 中反转字符串的不同方法,该怎么办?例如,如果面试官要求反转字符串的单词,而不是反转字符串的每个字符,该怎么办?
在这里,我们将学习如何在 TypeScript 中反转字符串的每个字符或单词。
在 TypeScript 中使用 for-of 循环反转字符串
反转字符串的简单方法是使用普通的 for 循环或 for-of 循环。在这里,我们将使用 for-of 循环来迭代字符串,因为字符串是可迭代的。之后,我们可以将字符串中的每个字符附加到反转字符串的开头。
语法
这里,我们给出了使用 TypeScript 中的 for-of 循环反转字符串的语法。
let str = "String to reverse!" let reverseString = ""; for (let char of str) { reverseString = char + reverseString; }
算法
步骤 1 − 定义字符串变量并用字符串值初始化它。
步骤 2 − 定义字符串类型的 reverseString 变量来存储反转后的字符串,并用空字符串初始化它。
步骤 3 − 使用 for-of 循环遍历字符串的每个字符。
步骤 4 − 将字符串的每个字符附加到 reverseString 变量的开头。
步骤 5 − 当 for 循环迭代完成后,我们可以获取存储在 reverseString 变量中的反转字符串。
示例 1
在此示例中,我们简单地实现了上述算法来反转字符串使用 for-of 循环。在输出中,用户可以在 for-of 循环迭代完成后观察到 reverseString 变量的值,即反转后的字符串。
// 定义字符串变量 let str: string = "Hello Users! Reverse this string!"; // 用于存储反转字符串的变量 let reverseString: string = ""; // 遍历字符串 for (let char of str) { // 将字符串的每个字符附加到 reverseString 的开头 reverseString = char + reverseString; } console.log("The original string is " + str); console.log("The reversed string is " + reverseString);
编译后,它将生成以下 JavaScript 代码 -
// 定义字符串变量 var str = "Hello Users! Reverse this string!"; // 用于存储反转字符串的变量 var reverseString = ""; // 遍历字符串 for (var _i = 0, str_1 = str; _i < str_1.length; _i++) { var char = str_1[_i]; // 将字符串的每个字符附加到 reverseString 的开头 reverseString = char + reverseString; } console.log("The original string is " + str); console.log("The reversed string is " + reverseString);
输出
上述代码将产生以下输出 -
The original string is Hello Users! Reverse this string! The reversed string is !gnirts siht esreveR !sresU olleH
在 TypeScript 中反转字符串的每个单词
现在,我们将学习如何反转字符串中的每个单词,而不是整个字符串。这个问题比上面的问题高一级,如果面试官想让面试更精彩,或者想了解你的解决问题的能力,可以问这个问题而不是上面的问题。
在 TypeScript 中,我们无法使用 reverse 方法反转字符串。因此,我们将字符串转换为字符数组,并使用 reverse() 方法反转字符数组。在这里,我们将使用一些内置库方法,例如 split()、join()、map() 和 reverse() 来反转字符串的每个单词。
语法
这里,我们给出了在 TypeScript 中反转字符串每个单词的语法。
let str1: string = "Reverse the every word of this string!"; let words: Array<string> = str1.split(" "); let reversedWords: Array<string> = words.map((word) => { let charArray: Array<string> = word.split(""); charArray.reverse(); let reversed: string = charArray.join(""); return reversed; }); let reverseString: string = reversedWords.join(" ");
算法
步骤 1 − 使用 split() 方法,并将带空格的字符串作为 split() 方法的参数传递,以创建包含该字符串中每个单词的数组。
步骤 2 − 要反转每个单词,请使用 map() 方法,该方法将回调函数作为参数并返回反转后的单词。
步骤 3 − 在 map 方法的回调函数中,将单词拆分为字符数组并将其存储在 charArray 变量中。
步骤 4 − 现在,使用 reverse() 方法反转 charArray。
步骤 5 − 接下来,使用 join() 方法连接 charArray,并将结果字符串存储在反转的变量。
步骤 6 - 返回包含反转单词的 reversed 变量。
步骤 7 - reverseWords 变量包含反转单词的数组;要将其合并为一个字符串,请使用 join() 方法。
示例 2
在下面的示例中,我们获取了一个字符串,并应用上述算法反转了该字符串中的每个单词。在输出中,我们可以观察到我们的算法反转了单个单词,而不是反转整个字符串。
// 反转每个单词的字符串 let str1: string = "Reverse the every word of this string!"; // 将字符串拆分为单词 let words: Array<string> = str1.split(" "); // 反转单词数组中的每个单词 let reversedWords: Array<string> = words.map((word) => { // 将单词拆分为字符数组 let charArray: Array<string> = word.split(""); // 反转字符数组 charArray.reverse(); // 连接字符数组使其重新成为单词 let reversed: string = charArray.join(""); // 返回反转后的单词 return reversed; }); // 将单词数组合并成一个字符串 let reverseString: string = reversedWords.join(" "); console.log("The normal string is " + str1); console.log("The string after reversing the every word is " + reverseString);
编译后,将生成以下 JavaScript 代码:
// 反转每个单词的字符串 var str1 = "Reverse the every word of this string!"; // 拆分字符串为单词 var words = str1.split(" "); // 反转 words 数组中的每个单词 var reversedWords = words.map(function (word) { // 将单词拆分为字符数组 var charArray = word.split(""); // 反转字符数组 charArray.reverse(); // 连接字符数组使其重新变为单词 var reversed = charArray.join(""); // 返回反转后的单词 return reversed; }); // 连接单词数组使其成为一个字符串 var reverseString = reversedWords.join(" "); console.log("The normal string is " + str1); console.log("The string after reversing the every word is " + reverseString);
输出
上述代码将产生以下输出 -
The normal string is Reverse the every word of this string! The string after reversing the every word is esreveR eht yreve drow fo siht !gnirts
在本教程中,用户学习了使用 for-of 循环反转字符串的简单方法。用户还学习了反转字符串中的每个单词。但是,他们也可以实现第二种方法,即使用 for-of 循环(而不是内置方法)反转字符串。