- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在用 C(不是 C++,这将在旧计算机上运行)编写一个函数,该函数应该接受输入 char* 并根据字母大写和数字向其添加空格,然后返回结果。由于平台限制,我恐怕无法使用字符串及其函数。
例如,输入“TestingThisPieceOfText”应返回为“Testing This Piece Of Text”。
我有一些(目前相当粗糙)代码适用于像这样的简单情况,但我想在规则中添加一些异常(exception),这就是我需要帮助的地方:
这是当前的功能(就像我说的,现在有点粗糙):
char* add_spaces_to_string(const char* input)
{
char input_string[100];
strcpy(input_string, input);
char* output = (char*)malloc(sizeof input_string * 2);
const char capitals[] = "ABCDEFGHIJKLMOPQRSTVWXYZ";
const char numbers[] = "1234567890";
const char mc[] = "Mc";
// Special case for the first character, we don't touch it
output[0] = input_string[0];
unsigned int output_index = 1;
unsigned int capital_found = 0;
unsigned int number_found = 0;
for (unsigned int input_index = 1; input_string[input_index] != '\0'; input_index++)
{
for (int capitals_index = 0; capitals[capitals_index] != '\0'; capitals_index++)
{
if (capitals[capitals_index] == input_string[input_index]
&& capital_found < input_index - 1
&& number_found < input_index - 1)
{
capital_found = input_index;
//printf("Found a capital character (%c), in position %u. Adding a space.\n", input_string[i], i);
output[output_index] = ' ';
output_index++;
output[output_index] = input_string[input_index];
}
}
for (int numbers_index = 0; numbers[numbers_index] != '\0'; numbers_index++)
{
if (numbers[numbers_index] == input_string[input_index]
&& capital_found < input_index - 1
&& number_found < input_index - 1)
{
number_found = input_index;
output[output_index] = ' ';
output_index++;
output[output_index] = input_string[input_index];
}
}
output[output_index] = input_string[input_index];
output_index++;
}
output[output_index] = '\0';
return output;
}
有了上面的简单例子
"AnotherPieceOfTextWithoutSpaces"
正确转换为
"Another Piece Of Text Without Spaces"
但更复杂的,例如
"A10TankKiller2Disk"
不是 - 它返回
"A1 0Tank Killer 2Disk"
在这种情况下。
所以问题是,为什么我在我不想要的位置上得到了空格,却没有把它们放在我想要的位置上(基于我上面提到的规则)?
任何指向正确方向的指示将不胜感激! :)
最佳答案
编辑:大写字母和数字的检测比必要的更复杂。此外,当一个数字跟在另一个数字后面以及当一个大写字母跟在一个数字后面时,它还会在错误的位置添加空格。
我使用 2 个受支持的辅助函数重写了该函数 - isdigit() 和 isupper()。这似乎使它暂时有效:
char* add_spaces_to_string(const char* input)
{
char input_string[100];
strcpy(input_string, input);
char* output = (char*)malloc(sizeof input_string * 2);
const char mc[] = "Mc";
// Special case for the first character, we don't touch it
output[0] = input_string[0];
unsigned int output_index = 1;
unsigned int input_index = 1;
unsigned int capital_found = 0;
unsigned int number_found = 0;
while (input_string[input_index])
{
if (isdigit(input_string[input_index]))
{
if (number_found < input_index - 1)
{
output[output_index] = ' ';
output_index++;
output[output_index] = input_string[input_index];
}
number_found = input_index;
}
else if (isupper(input_string[input_index]))
{
if (capital_found < input_index - 1)
{
output[output_index] = ' ';
output_index++;
output[output_index] = input_string[input_index];
}
capital_found = input_index;
}
output[output_index] = input_string[input_index];
output_index++;
input_index++;
}
output[output_index] = '\0';
return output;
}
我仍然需要为“Mc”的情况添加一个特殊规则,但这对我来说是一个小问题,我稍后会添加它。
关于C - 在大写字母和数字的输入字符串中添加空格,但有一些异常(exception),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51873161/
我遇到了一个小问题。我想利用字符串中的双字母。我设法编译了一个程序,但没有成功。 #include #include #include std::string::iterator functio
我想让我在文本字段中写的所有内容都是大写字母。在我写作时,而不是在失去焦点之后。 我如何使用 jQuery 做到这一点? 最佳答案 我会为此使用 CSS。 只需将 text-transform: up
<% '****************************** '函数:gen_key(digits)&nb
我有一个表单,我希望用户只输入字母、数字 我想限制他们 使用数字作为第一个值 例如。 1abc 使用大写字母1ABc 使用空格1 ab CD d5 我只想要abc1 OR a1bc OR f25fhg
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
恢复MySQL数据库后,我可以保留所有大写字母名称的表。但 View 名称改为小写字母。 我可以更改一些设置以使 View 在恢复数据库后保留大写字母名称吗? 附注我可以在恢复后再次将 View 更改
总的来说,我是 PDO 和 MySQL 的新手。我正在从即将弃用的 MySQL 切换到 PDO,我有一些问题想更好地了解 MySQL 查询的工作原理。 我目前有这个功能,我不明白表格行前的大写U.&M
仅当所有大写字母位于单词中间时,我才需要匹配它们。例如,RegExr 将与字母 E 匹配。 someThings 代表字母 T。如果大写字母从单词的开头开始,则它不应该匹配。 这个正则表达式几乎匹配它
这个问题已经有答案了: What causes a java.lang.ArrayIndexOutOfBoundsException and how do I prevent it? (25 个回答)
我需要按字母顺序相应地排列名称。我设法获得了所需的输出。但是,当我用第一个大写字母键入名称时,例如:Peter,输出是不同的。 EG 输入:Peter Paul John Mary EG 输出:第一个
我一直在谷歌上搜索,但没有找到我的问题的答案: 如何使用正则表达式检查字符串是否至少包含以下各项: 大写字母 小写字母 数字 特殊字符:~`!@#$%^&*()-_=+\|[{]};:'",/? 所以
所以我找到了一个适用于数字然后字母的代码,我尝试修改,以便用户在单元格中输入数据需要是 ex:"52TSQ1234512345" 。我知道他们必须输入 ex: "12PQS" (数字和字母是示例,它可
我正在尝试编写代码,以便从字符串(文本)中删除“坏”单词。 如果该词后面有逗号或任何特殊符号,则该词是“坏”的。如果该单词仅包含 a 到 z(小写字母),则该单词并不“坏”。 所以,我想要达到的结果是
Visual Studio 2012 c++ 文档指出 _ReadBarrier和 _WriteBarrier内在函数现在是 deprecated: The _ReadBarrier, _WriteB
在我的站点中,我提供了一个选项来上传带有 .jpg 和 .JPG 扩展名的图像。它们都可以工作,我可以在服务器本身上看到它们。 当我尝试在浏览器中查看带有 .jpg 扩展名的照片时,将它们命名为 na
我刚刚看到这在技术上是可行的,我无法解决的唯一错误是每次测试时打印的最后一个 ASCII 字符,我也在不使用 的情况下进行了测试。姓名 变量,我的意思是在 ASCII 中的任何小写字母减去 32 应该
我得到了这样的序列: (\$ \# \A \( \* \& \9 \8 \7 \Z \f) 我想过滤掉其中的大写 ASCII 字母,如\A 和\Z 我试图在标准库中查找,但没有运气。 有谁能够帮助我?
我已经搜索过 SO 和 Google,我发现的大多数示例似乎都没有按预期工作(或者没有结合所有这些元素)。我正在尝试创建一个 Regex 表达式,如果字符串包含 至少 字符串中的以下 anywhere
我需要从 mysql 中选择有关查询字符串的结果。让我们的字符串是:Z 和 z(大写和小写) 数据库的样子: url_id test_char 1 Z 2
到目前为止,我们在任何地方都没有发现关于这种非常奇怪的效果的信息。 有一段时间(不知 Prop 体从什么时候开始),大写字母 S 在 Windows 浏览器中的呈现就像它向右移动了一两个像素一样。 这
我是一名优秀的程序员,十分优秀!