a327904410 发表于 2021-9-26 15:00:46

单词的位置

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

比如有个字符串 Easy**--so*book--**--Car
so的位置是2 ,用代码怎么找,给点思路呗。{:10_257:}

qq1151985918 发表于 2021-9-26 15:28:48

不会 c,提供个思路
这在 python 很简单
把 - 和 * 全部替换成 空格
然后 以空格分离

bszs 发表于 2021-9-26 15:42:21

你等一下,我刚写完手残给删了

人造人 发表于 2021-9-26 16:18:41

按照楼上的意思写了一个,用 C++ 写的,^_^
#include <iostream>
#include <string>
#include <regex>
#include <vector>
#include <boost/algorithm/string.hpp>

int main() {
    std::string s = "Easy**--so*book--**--Car";
    s = std::regex_replace(s, std::regex(R"((\*+)|(-+))"), " ");
    s = std::regex_replace(s, std::regex(R"( +)"), " ");
    std::vector<std::string> v;
    boost::split(v, s, boost::is_any_of(" "));
    for(size_t i = 0; i < v.size(); ++i) {
      if(v == "so") std::cout << i + 1 << std::endl;
    }
    return 0;
}

jhq999 发表于 2021-9-26 16:21:27

本帖最后由 jhq999 于 2021-9-26 16:29 编辑

bool flag=0;
char ch[字符串长度+1],tmp=0;
int len=0,st=0;
if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z'))
{
if(!flag)
{
st=i;
flag=1;
}
}
else
{
if(flag)
{
//ed=i;
tmp=ch
ch='\0';
//len=ed-st;
printf("%s\n",ch+st);
ch=tmp;
flag=0;
}
}
只是个思路,没有上编译器

bszs 发表于 2021-9-26 16:22:21

#include "stdio.h"
int main()
{
        char s={"seuh**woakj-kj*kjhs-----se"};
        int a=0,b=0,c=0,count=0;
        for(a=0;s!='\0';a++)
        {
                if(s!='*'&&s!='-')
                {
                        b=1;
                        printf("%c",s);

                }
                else if(b==1)
                {
                        c=-2;
                }
                if(b==1&&c==-2)
                {
                        count++;
                        printf("%d\n",count);
                        b=0;
                        c=0;
                }
        }
        printf("%d",count+1);
}
这段代码在电脑上没问题在手机上有错误

bszs 发表于 2021-9-26 16:28:19

人造人 发表于 2021-9-26 16:18
按照楼上的意思写了一个,用 C++ 写的,^_^

大佬,这两个冒号在一起是啥意思

jhq999 发表于 2021-9-26 16:31:24

人造人 发表于 2021-9-26 16:18
按照楼上的意思写了一个,用 C++ 写的,^_^

看样子你得从头开始教他了{:5_109:}

人造人 发表于 2021-9-26 16:31:31

bszs 发表于 2021-9-26 16:28
大佬,这两个冒号在一起是啥意思

?

bszs 发表于 2021-9-26 16:38:04

人造人 发表于 2021-9-26 16:18
按照楼上的意思写了一个,用 C++ 写的,^_^

抱歉,我看错了,原来是c++

jackz007 发表于 2021-9-26 17:24:42

本帖最后由 jackz007 于 2021-9-26 17:27 编辑

#include <stdio.h>

int main(void)
{
      char str[] = "Easy**--so*book--**--Car" , word   ;
      int i , j , k                                          ;
      for(i = j = k = 0 ; str ; i ++) {
                if(str != '*' && str != '-') {
                        word = str                  ;
                } else {
                        if(j) {
                              word = '\0'               ;
                              k ++                           ;
                              printf("%d : %s\n" , k , word) ;
                              j = 0                        ;
                        }
                }
      }
      if(j) {
                word = '\0'                                 ;
                printf("%d : %s\n" , k + 1 , word)             ;
      }
}
      编译、运行实况:
D:\0002.Exercise\C>g++ -o x x.c

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

D:\0002.Exercise\C>

a327904410 发表于 2021-9-27 20:41:59

人造人 发表于 2021-9-26 16:18
按照楼上的意思写了一个,用 C++ 写的,^_^

{:10_262:}为什么那么多回复都没提醒的,我还以为我的贴子凉了。

a327904410 发表于 2021-9-27 20:43:31

qq1151985918 发表于 2021-9-26 15:28
不会 c,提供个思路
这在 python 很简单
把 - 和 * 全部替换成 空格


有意思

人造人 发表于 2021-9-27 21:00:08

a327904410 发表于 2021-9-27 20:41
为什么那么多回复都没提醒的,我还以为我的贴子凉了。

可能 bug 了吧,我有时候也这样
页: [1]
查看完整版本: 单词的位置