/ gamemode 0 "jdiajso ceqwjipj"
MC是如何准确的分割为
gamemode
0
jdiajso ceqwjipj
的?
MC是如何准确的分割为
gamemode
0
jdiajso ceqwjipj
的?
Brigadier。
https://github.com/Mojang/brigadier
https://github.com/Mojang/brigadier
感谢大佬助攻awa
emmmm这个好像是一个库把,想要算法qwq
微醉的阳光 发表于 2020-6-13 13:38
emmmm这个好像是一个库把,想要算法qwq
参见java.lang.String
用空格来分割文本吗
微醉的阳光 发表于 2020-6-13 13:44
用空格来分割文本吗
如果不是我论坛挂着我就看不到你回复了(
请善用回复
是的,用空格来分割,你可以把带""的一段切出来换成没有空格的随机字符,然后用空格分隔,再把随机字符替换成原先的内容
轻光233 发表于 2020-6-13 13:54
但凡你能继续看javase api教程。。。
只会出现一个数组,详见百度
那么名字该如何判定
"test aaaaaa"
会分割成
"test,aaaaaa"
吧
用正则表达式分割
复制代码
- split("\\s+")
微醉的阳光 发表于 2020-6-13 13:54
那么名字该如何判定
"test aaaaaa"
会分割成
看我说了什么。。。
先把有引号的替换掉
for,charAt找到两个引号的位置,然后获取,替换
我写一段吧
- String str = "/aaa sacvs "aa aa"";
- String temp = "andxobfgbvrfd";
- str = str.replace("/", "");
- int start = -1;
- int over = -1;
- for(int i = 0;i < str.length();i++) {
- if(str.charAt(i) == '"') {
- if(start == -1) {
- start = i;
- }else {
- over = i;
- }
- }
- }
-
- if(start != -1 && over != -1) {
- String sub = str.substring(start,over + 1);
- str = str.replace(sub, temp);
- String[] split = str.split(" ");
- for(int i = 0; i < split.length;i++) {
- if(split[i].equals(temp)) {
- split[i] = sub;
- }
- }
- System.out.println(Arrays.toString(split));
- }
轻光233 发表于 2020-6-13 14:04
看我说了什么。。。
先把有引号的替换掉
for,charAt找到两个引号的位置,然后获取,替换
推荐使用String 的 indexOf() 和 lastIndexOf()
本帖最后由 轻光233 于 2020-6-13 14:10 编辑
确实,这样会更快一点
但是如果引号的对数多一点,还是要换成charAt判断相等(
南柯郡守 发表于 2020-6-13 14:07
推荐使用String 的 indexOf() 和 lastIndexOf()
确实,这样会更快一点
但是如果引号的对数多一点,还是要换成charAt判断相等(
我的意思是你这个方法等价于 lastIndexOf()
如果arg里面出现三个 " 或者更多的 " 那么你的over的值也是最后一个引号的值 而不是中间的第二个
那么lastIndexOf("\"")的值也是最后一个的值
南柯郡守 发表于 2020-6-13 14:26
我的意思是你这个方法等价于 lastIndexOf()
如果arg里面出现三个 " 或者更多的 " 那么你的over的值也是 ...
我也没说不用改(
他如果要的话我再改吧
微醉的阳光 发表于 2020-6-13 13:38
emmmm这个好像是一个库把,想要算法qwq
为什么在有现成的库的时候跑去自己造轮子?
因为用的不是java
微醉的阳光 发表于 2020-6-13 14:41
因为用的不是java
https://github.com/Mojang/brigad ... r/StringReader.java
Brigadier 大致是用这个 tokenize string 的。
Ref
https://github.com/Mojang/brigad ... ispatcher.java#L364