【发布时间】:2021-07-08 07:03:05
【问题描述】:
编辑:感谢您对模棱两可的问题和结构不佳的示例做出如此多的回应和道歉。我并不是要按大写字符来拆分单词。我的字面意思是在“X”、“r”或“o”等特定字符之后拆分字符串。
我正在尝试将一长串重复的单词(例如“FooXXBarBazXBar ...”)拆分为单词列表 ['Fo', 'o', 'X', 'X', 'Bar', 'Baz '、'X'、'条形图' ...]。
在 c 中,我会创建一个新的字符数组并一个接一个地复制字符,在特定字符之后插入一个分隔符,以便稍后在分隔符上拆分,如下所示:
{
char *newString = malloc(sizeof(char)*200);
int offset=0;
//copy characters from old string to the new one, inserting ';' after a specific character
for (int i = 0, n = strlen(string); i < n; i++)
{
newString[i+offset] = string[i];
if ((string[i] == 'o') || (string[i] == 'r') || (string[i] == 'z') || (string[i] == 'X'))
{
offset += 1;
newString[i+offset] = ';';
}
}
//split the string into an array of strings on the delimiter ';'
split_string(newString);
}
我还是一个初学者,所以它可能也不是那么好,但它确实有效。
我正在尝试在 python 中解决这个问题,但无法提出一个好的方法。
你会怎么做?谢谢:)
【问题讨论】:
-
我认为您必须更好地说明拆分如何工作的问题,例如为什么要拆分
Foo而不是FooX或FooXX。我认为您想拆分字母的重复模式(从最长的模式开始),所以Foo要在字符串中的某处拆分,应该有另一个Foo模式,等等。 -
还有为什么您使用关键字
Python而您的代码sn-p 在C中? -
@BrunoVermeulen 也许结果词必须以
[aeiou]结尾? -
您好,谢谢您的回答。我的 sn-p 在 C 中,因为我知道如何实现它。我使用了 Python 关键字,因为我正在寻找 Python 中这个问题的解决方案。我在显示输入“Foo”和输出 [“Foo”] 的示例中犯了一个错误。在我正在寻找的内容中,它会给出 ["Fo", "o"] 我想在我的代码中定义一个特定字符并在该字符之后拆分字符串。