Julia中获取特定子串后的字符串及子串定位相关问题
下面是针对你这两个Julia字符串处理问题的实用解法,都是日常开发里常用的技巧:
1. 获取特定子串之后的字符串
有两种常用方法,你可以根据场景选择:
方法一:用
findfirst定位后截取
先找到目标子串的位置,再从子串结束的下一个字符开始截取到末尾,记得先判断子串是否存在避免报错:str = "hello julia world" target_sub = "julia " pos = findfirst(target_sub, str) if pos !== nothing result = str[pos.stop+1:end] println(result) # 输出 "world" end方法二:用
split分割后取片段
设置分割次数为2,这样只会把字符串分成两部分,第二部分就是子串之后的内容:str = "hello julia world" target_sub = "julia " parts = split(str, target_sub; limit=2) if length(parts) >= 2 result = parts[2] println(result) # 输出 "world" end
2. 定位特定字符串后的下一个子串 & 从行首移动x字符后取字符串
案例1:从push constant 17中提取17
这个场景因为是空格分隔的指令,最简单的方式是直接分割字符串取对应位置:
str = "push constant 17" parts = split(str) # 默认按空格分割 println(parts[3]) # 输出 "17"
如果要适配更通用的场景(比如子串位置不固定),可以用第一个问题里的findfirst方法,定位constant 之后的内容:
str = "push constant 17" target_sub = "constant " pos = findfirst(target_sub, str) result = str[pos.stop+1:end] println(result) # 输出 "17"
案例2:从行首移动x个字符后选取目标字符串
Julia的字符串索引是从1开始的,要跳过前x个字符,直接从x+1的位置开始截取即可:
str = "abcdefghijk" x = 4 # 跳过前4个字符(a,b,c,d) result = str[x+1:end] println(result) # 输出 "efghijk"
如果要截取固定长度的内容,比如跳过x个字符后取3个字符:
str = "abcdefghijk" x = 4 take_length = 3 result = str[x+1:x+take_length] println(result) # 输出 "efg"
内容的提问来源于stack exchange,提问作者RT.
相关产品推荐
相关产品推荐

