添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
憨厚的黑框眼镜  ·  PhpMyadmin利用Mysql ...·  9 月前    · 
重感情的热水瓶  ·  mybatis ...·  1 年前    · 
健壮的热带鱼  ·  PHP5.6连接mysql8.0 ...·  1 年前    · 

字符串的操作是算法题当中经常碰见的一类题目,主要考察对string类型的处理和运用。

在处理字符串的时候,我们经常会碰到求字符串长度、匹配子字符串、替换字符串内容、连接字符串、提取字符串字符等操作,那么调用一些简单好用的api可以让工作事半功倍,在TypeScript中,这些api其实和JavaScript的相同,下面整理一些比较常用的api:

1️⃣、 返回字符串长度

length 属性 : 返回字符串的长度

	let txt = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	console.log(txt.length)  // 26

2️⃣、查找字符串

indexOf() 方法: 返回字符串中指定文本首次出现的索引(从0开始数,未找到则返回 -1):

	let txt = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	console.log(txt.indexOf('ABCD'))  // 0

lastIndexOf()方法: 返回字符串中指定文本最后一次出现的索引:

	let txt = "ABCDEFGHIJKLABCDEFGH";
	console.log(txt.lastIndexOf('ABCD'))  // 12

可以添加检索起始位置为第二个参数:txt.indexOf(“ABCD”, 5)、txt.lastindexOf(“ABCD”, 10):

    let txt = "ABCDEFGHIJKLABCDEFGH";
    console.log(txt.indexOf("ABCD", 5)); // 12
    console.log(txt.lastIndexOf("ABCD", 10)); // 0

includes() 方法: 如果字符串包含指定值,includes() 方法返回 true

    let txt = "a,b,c,aaa,bbb,aaa";
    console.log(txt.includes("aaa")); // true

3️⃣、提取字符串

slice()方法:提取字符串的某个部分并在新字符串中返回被提取的部分:

    let txt = "Apple, Banana, Mango";
    console.log(txt.slice(7)); //  Banana, Mango
    console.log(txt.slice(7,13)); //  Banana

如果某个参数为负,则从字符串的结尾开始计数:

    let txt = "Apple, Banana, Mango";
    console.log(txt.slice(7,-3)); // Banana, Ma

substring()方法: 类似于 slice(),提取字符串的某个部分并在新字符串中返回被提取的部分。

    let txt = "Apple, Banana, Mango";
    console.log(txt.substring(7));  //  Banana, Mango
    console.log(txt.substring(7,10)); // Ban

substr()方法:类似于 slice(),但第二个参数是被提取部分的长度。

    let txt = "Apple, Banana, Mango";
    console.log(txt.substr(7,4)); // Bana

4️⃣、替换字符串内容

replace() 方法: 用另一个值替换在字符串中指定的值,返回新字符串,默认只替换首个匹配:

let txt = "Apple, Banana, Mango";
console.log(txt.replace("Banana", "Orange")); // Apple, Orange, Mango
// 执行大小写不敏感的替换,使用正则表达式 /i 
console.log(txt.replace(/BAnana/i, "Orange")); // Apple, Orange, Mango
// 替换所有匹配,请使用正则表达式的 g 标志(用于全局搜索):
let txt = "Apple, Banana, Mango, Banana";
console.log(txt.replace(/Banana/g, "Orange")); // Apple, Orange, Mango, Orange

5️⃣、转换为大写和小写

toUpperCase() 方法:把字符串转换为大写:

    let txt = "Apple, Banana, Mango, Banana";
    console.log(txt.toUpperCase()); // APPLE, BANANA, MANGO, BANANA

toLowerCase() 方法:把字符串转换为大写:

    let txt = "Apple, Banana, Mango, Banana";
    console.log(txt.toLowerCase()); // apple, banana, mango, banana

6️⃣、连接字符串

concat() 方法:连接两个或多个字符串:

    let txt1 = "Apple";
    let txt2 = "Banana";
    let txt3 = "Mango";
    console.log(txt1.concat(" ", txt2, " ", txt3)); // Apple Banana Mango

7️⃣、提取字符串字符

charAt() 方法: 返回字符串中指定下标(位置)的字符串

    let txt1 = "Apple";
    console.log(txt1.charAt(1)); // p

charCodeAt() 方法: 返回字符串中指定索引的字符 unicode 编码

    let txt1 = "Apple";
    console.log(txt1.charCodeAt(1)); // 112

属性访问(不推荐):

    let txt1 = "Apple";
    console.log(txt1[1]); // p

8️⃣、切片把字符串转换为数组

split() 方法: 切片,以某个为分隔,将字符串转换为数组:

    let txt1 = "a,b,c";
    console.log(txt1.split("")); // [ 'a', ',', 'b', ',', 'c' ]
    console.log(txt1.split(",")); // [ 'a', 'b', 'c' ]

💖 个人简介:2022年度博客之星总排名TOP12、人工智能领域TOP2,人工智能领域优质创作者。

📝 关注我:中杯可乐多加冰

🔥 限时免费订阅:TypeScript算法实战

📝 加入社群 抱团学习中杯可乐的答疑交流群

🎉 支持我:点赞👍+收藏⭐️+留言📝

字符串的操作是算法题当中经常碰见的一类题目,主要考察对string类型的处理和运用。在处理字符串的时候,我们经常会碰到求字符串长度、匹配子字符串、替换字符串内容、连接字符串、提取字符串字符等操作,那么调用一些简单好用的api可以让工作事半功倍,在TypeScript中,这些api其实和JavaScript的相同,下面整理一些比较常用的api: 根据json字符串自动生成TypeScript interface定义 使用方式: const interfaceDefinition = require('json-to-ts-interface'); const res = interfaceDefinition(json对象||json字符串, {}) 参数配置: 方法第二个参数接收一个对象,对象内容如下: globalExportMode: 1, // 默认 don't export 1 = don't export 2 = export 3 = export default lineBreak: '\n', // 换行符 indent: ' ', // 缩进 默认两个空格 interfaceName: 'Res npm install create-ts-index --save-dev 下一代导出生成工具。 ctix使用TypeScript编译器API。 因此在create-ts-index中解决了许多问题。 例如,单独的项目(由tsconfig.json使用)并支持默认功能,自动检测具有导出语句的文件等。我需要更多帮助来改善ctix。 创建要导出的index.ts文件。 如果index.ts中没有仅用于导出的业务逻辑,则create-ts-index有助于轻松导入。 或者,如果您有图书馆项目需要此导出过程(例如,blueprint.js等)。 cti(create-ts-index)创建导出index.ts文件。 例如,下面的示例目录。 app.ts component/ Nav.ts Button.t
replace中的正则replace:把原有的字符替换成新的字符1. replace字符串替换var str = 'pku2016pku2017'; str = str.replace('pku', 'pkusoft'); console.log(str); // pkusoft2016pku2017在不使用正则的情况下,每次执行只能替换一个字符,每次执行都是从0开始替换,有重复的,无法全部替换2
var arr:Array<any>=[2015,"2015","index"]; var index:number=arr.indexOf("2015"); var sub:number=arr.indexOf(2015); var i:number=arr.indexOf("index-1"); console.log(index+" "+sub+" "+i); 1 0 ...
charAt() ---返回在指定位置的字符。 concat() ---连接两个或更多字符串,并返回新的字符串indexOf() ---返回某个指定的字符串值在字符串中首次出现的位置。 lastInde...
一,substr()    substr() 方法可在字符串中抽取从 start 下标开始的指定数目的字符。   语法:stringObject.substr(start,length)。    1: start 必需。要抽取的子串的起始下标。必须是数值。如果是负数,那么该参数声明从字符串的尾部开始算起的位置。也就是说,-1 指字符串中最后一个字符,-2 指倒数第二个字符,以此类推。
# 前端使用typescript和AES加密一个字符串前端使用typescript和AES加密一个字符串的例子中,我们可以使用crypto-js库来实现加密。首先,我们需要安装crypto-js库: npm install crypto-js 然后,我们可以使用以下代码来加密一个字符串: ```typescript import * as CryptoJS from 'crypto-js'; const key = CryptoJS.enc.Utf8.parse('1234567890123456'); const iv = CryptoJS.enc.Utf8.parse('1234567890123456'); const plaintext = 'Hello, world!'; const ciphertext = CryptoJS.AES.encrypt(plaintext, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 console.log(ciphertext.toString()); 这里,我们使用了一个16字节的密钥和一个16字节的初始化向量来加密一个字符串。加密模式为CBC,填充模式为Pkcs7。 # 后端使用C 在后端使用C语言解密一个AES加密的字符串的例子中,我们可以使用OpenSSL库来实现解密。首先,我们需要安装OpenSSL库: sudo apt-get install libssl-dev 然后,我们可以使用以下代码来解密一个字符串: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <openssl/aes.h> int main() { unsigned char key[] = "1234567890123456"; unsigned char iv[] = "1234567890123456"; unsigned char ciphertext[] = "U2FsdGVkX1+XKjJ5y5+5JfK5J5gJfZzJ"; unsigned char plaintext[128]; AES_KEY aes_key; AES_set_decrypt_key(key, 128, &aes_key); AES_cbc_encrypt(ciphertext, plaintext, sizeof(ciphertext), &aes_key, iv, AES_DECRYPT); printf("%s\n", plaintext); return 0; 这里,我们使用了一个16字节的密钥和一个16字节的初始化向量来解密一个字符串。解密模式为CBC。注意,解密后的明文可能包含空字符,因此我们需要使用printf函数来输出明文。