鱼C论坛

 找回密码
 立即注册
查看: 1650|回复: 13

单词的位置

[复制链接]
发表于 2021-9-26 15:00:46 From FishC Mobile | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
每个单词都有*或-隔开,怎么找出单词的位置。

比如有个字符串 Easy**--so*book--**--Car
so的位置是2 ,用代码怎么找,给点思路呗。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-9-26 15:28:48 | 显示全部楼层
不会 c,提供个思路
这在 python 很简单
把 - 和 * 全部替换成 空格
然后 以空格分离
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-26 15:42:21 From FishC Mobile | 显示全部楼层
你等一下,我刚写完手残给删了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-26 16:18:41 | 显示全部楼层
按照楼上的意思写了一个,用 C++ 写的,^_^
  1. #include <iostream>
  2. #include <string>
  3. #include <regex>
  4. #include <vector>
  5. #include <boost/algorithm/string.hpp>

  6. int main() {
  7.     std::string s = "Easy**--so*book--**--Car";
  8.     s = std::regex_replace(s, std::regex(R"((\*+)|(-+))"), " ");
  9.     s = std::regex_replace(s, std::regex(R"( +)"), " ");
  10.     std::vector<std::string> v;
  11.     boost::split(v, s, boost::is_any_of(" "));
  12.     for(size_t i = 0; i < v.size(); ++i) {
  13.         if(v[i] == "so") std::cout << i + 1 << std::endl;
  14.     }
  15.     return 0;
  16. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-26 16:21:27 | 显示全部楼层
本帖最后由 jhq999 于 2021-9-26 16:29 编辑
  1. bool flag=0;
  2. char ch[字符串长度+1],tmp=0;
  3. int len=0,st=0;
  4. if((ch[i]>='a'&&ch[i]<='z')||(ch[i]>='A'&&ch[i]<='Z'))
  5. {
  6. if(!flag)
  7. {
  8. st=i;
  9. flag=1;
  10. }
  11. }
  12. else
  13. {
  14. if(flag)
  15. {
  16. //ed=i;
  17. tmp=ch[i]
  18. ch[i]='\0';
  19. //len=ed-st;
  20. printf("%s\n",ch+st);
  21. ch[i]=tmp;
  22. flag=0;
  23. }
  24. }
  25. 只是个思路,没有上编译器
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-26 16:22:21 | 显示全部楼层
  1. #include "stdio.h"
  2. int main()
  3. {
  4.         char s[100]={"seuh**woakj-kj*kjhs-----se"};
  5.         int a=0,b=0,c=0,count=0;
  6.         for(a=0;s[a]!='\0';a++)
  7.         {
  8.                 if(s[a]!='*'&&s[a]!='-')
  9.                 {
  10.                         b=1;
  11.                         printf("%c",s[a]);

  12.                 }
  13.                 else if(b==1)
  14.                 {
  15.                         c=-2;
  16.                 }
  17.                 if(b==1&&c==-2)
  18.                 {
  19.                         count++;
  20.                         printf("%d\n",count);
  21.                         b=0;
  22.                         c=0;
  23.                 }
  24.         }
  25.         printf("%d",count+1);
  26. }
复制代码

这段代码在电脑上没问题在手机上有错误
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-26 16:28:19 | 显示全部楼层
人造人 发表于 2021-9-26 16:18
按照楼上的意思写了一个,用 C++ 写的,^_^

大佬,这两个冒号在一起是啥意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-26 16:31:24 | 显示全部楼层
人造人 发表于 2021-9-26 16:18
按照楼上的意思写了一个,用 C++ 写的,^_^

看样子你得从头开始教他了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-26 16:31:31 | 显示全部楼层
bszs 发表于 2021-9-26 16:28
大佬,这两个冒号在一起是啥意思

?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-26 16:38:04 | 显示全部楼层
人造人 发表于 2021-9-26 16:18
按照楼上的意思写了一个,用 C++ 写的,^_^

抱歉,我看错了,原来是c++
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-26 17:24:42 | 显示全部楼层
本帖最后由 jackz007 于 2021-9-26 17:27 编辑
  1. #include <stdio.h>

  2. int main(void)
  3. {
  4.         char str[] = "Easy**--so*book--**--Car" , word[64]     ;
  5.         int i , j , k                                          ;
  6.         for(i = j = k = 0 ; str[i] ; i ++) {
  7.                 if(str[i] != '*' && str[i] != '-') {
  8.                         word[j ++] = str[i]                    ;
  9.                 } else {
  10.                         if(j) {
  11.                                 word[j] = '\0'                 ;
  12.                                 k ++                           ;
  13.                                 printf("%d : %s\n" , k , word) ;
  14.                                 j = 0                          ;
  15.                         }
  16.                 }
  17.         }
  18.         if(j) {
  19.                 word[j] = '\0'                                 ;
  20.                 printf("%d : %s\n" , k + 1 , word)             ;
  21.         }
  22. }
复制代码

        编译、运行实况:
  1. D:\0002.Exercise\C>g++ -o x x.c

  2. D:\0002.Exercise\C>x
  3. 1 : Easy
  4. 2 : so
  5. 3 : book
  6. 4 : Car

  7. D:\0002.Exercise\C>
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-27 20:41:59 | 显示全部楼层
人造人 发表于 2021-9-26 16:18
按照楼上的意思写了一个,用 C++ 写的,^_^

为什么那么多回复都没提醒的,我还以为我的贴子凉了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-27 20:43:31 | 显示全部楼层
qq1151985918 发表于 2021-9-26 15:28
不会 c,提供个思路
这在 python 很简单
把 - 和 * 全部替换成 空格

有意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-27 21:00:08 | 显示全部楼层
a327904410 发表于 2021-9-27 20:41
为什么那么多回复都没提醒的,我还以为我的贴子凉了。

可能 bug 了吧,我有时候也这样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-20 08:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表