获取一个字符';s的位置,该位置作为字符串存储在字符数组中
本文关键字:字符 位置 字符串 数组 存储 一个 获取 | 更新日期: 2023-09-27 18:24:33
我创建了一个程序,该程序从存储在字符数据类型数组中的给定单词中随机生成一个字母。
例如:
strong和r被生成并且也被显示。
如何获取r的位置并显示它?
s-1,t-2,r-3,o-4,n-5,g-6。字母r是第三个字母。
由于我已经将单词存储在字符数组中,所以默认情况下,数组的索引值从0开始,我无法重置它
我已经生成了r,如何在不篡改我的字符数组的情况下获取和显示它的位置?
有没有什么地方可以比较随机生成的r和它的位置?
Array.IndexOf方法(数组,对象)是您的朋友:
int index = Array.IndexOf(characters, randomChar) + 1;
//+1 at the end because indexes are zero-based
您可以按如下方式使用Array.IndexOf
:
var word = new[] { 's', 't', 'r', 'o', 'n', 'g' };
var character = 'r';
var position = Array.IndexOf(word, character);
注意:由于数组是零索引的,您需要在位置上加1才能获得3
,因为在本例中IndexOf将返回2
。
如果你想显示给定字符的所有位置,那么你需要创建一个方法来找到它们(类似这样的方法,尽管它可能会改进):
public static IEnumerable<int> AllIndexesOf<T>(this T[] source, T value)
where T : IComparable<T>
{
if (Array.IndexOf(source, value) == -1)
{
yield return -1;
yield break;
}
var position = Array.IndexOf(source, value);
while (position > 0)
{
yield return position;
position = Array.IndexOf(source, value, position + 1);
}
yield break;
}
然后你可以使用如下:
var word = new[] { 's', 't', 'r', 'o', 'n', 'g', 'e', 'r' };
var character = 'r';
foreach (var position in word.AllIndexesOf(character))
{
Console.WriteLine(position.ToString());
}
由于您没有提供任何代码,让我来展示一下我将如何实现它:
public static string RandomChar(string s) {
Random r = new Random();
int i = r.Next(s.Length);
return s[i] + " - " + (i+1);
}
这会随机选择一个索引,并返回该索引处的字符以及该字符的基于1的索引,例如"r - 3"
。
称之为:
string result = RandomChar("strong");
// Do something with the result, e.g. Console.WriteLine(result).
是否必须在C#中执行此操作?因为您可以使用php:来完成此操作
<?php
$mystring = 'strong';
$findme = 'r';
$pos = strpos($mystring, $findme);
$posadj = $pos +1; //this will offset because the array starts at 0.
// must use ===
if ($pos === false) {
echo "The string '$findme' was not found in the string '$mystring'";
} else {
echo "The string '$findme' was found in the string '$mystring'";
echo " and exists at position $pos which when offset is really $pos1.";
}
?>
这个片段的结果是$pos=2和$pos1=3。