jquery查找字符串,并且定位到字符串所在位置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jquery查找字符串,并且定位到字符串所在位置相关的知识,希望对你有一定的参考价值。

Jquery查找字符串,找到字符串,页面滚动到字符串所在的位置,这个要怎么做到?
详细说明下:我有一个表格显示数据,现在对其中一行的数据进行操作,操作完之后页面会刷新,我想在刷新之后页面还是定位到这一行的位置。并标示出表的这一行。我看到浏览器ctrl+F就是这个功能(每一行有一个标好的字段的,可以查找这个字段定位)。查找到之后会定位。

    indexOf() 和 lastIndexOf() 是js的用法,与jquery是无关的,所有直接用原生js就可以了。

    indexOf() 和 lastIndexOf() 方法返回的都是指定的子串在另一个字符串中的位置,如果没有找不到子串,则返回 -1。 

    这两个方法的不同之处在于,indexOf() 方法是从字符串的开头(位置 0)开始检索字符串,而 lastIndexOf() 方法则是从字符串的结尾开始检索子串。 

    strObj.indexOf(subString[, startIndex]) 参 数 strObj 必选项。String 对象或文字,要在 String 对象中查找的子字符 串。 starIndex 可选项。该整数值指出在 String 对象内开始查找的索引。如果省略,则从字符串的开始处查找。

    说明 indexOf 方法返回一个整数值,指出 String 对象内子字符串的开始位置。如果没有找到子字符串,则返回 -1。 如果 startindex 是负数,则 startindex 被当作零。如果它比最大的字符位置索引还大,则它被当作最大的可能索引。 从左向右执行查找。否则,该方法与 lastIndexOf 相同。

例子: [CODE_html] [/CODE_HTML] 最后得到的结果是-1,0,3 

    if(ss.indexOf('winner')>-1) 

    strobj.indexOf(substring[, startindex]) 

    其中strobj是必选项。string 对象或文字 

参考技术A 查找字符串

<script language="javascript">
<!--
str = "JavaScript";

str1 = str.charAt(0);
str2 = str.charAt(4);

document.write("str=" + str + "<br>");
document.write("第1个字符是:" + str1 + "<br>");
document.write("第5个字符是:" + str2 + "<br>");
//-->
</script>

你说的滚动到指定的位置 是锚链接吗? 可以再指定的标签加上 比如说:
<a href="#index"></a>

<div id="index"></div>

这样就可以跳到指定的位置,不知道你说的是不是这个意思

如何通过华为定位API精准获取用户所在地理位置?

我们在外出旅行时,通常需要在酒店App中预订酒店。那么,在酒店App中是如何获取用户地理位置信息从而实现 “附近的酒店”的功能查找?为此,我开发了一款名为Hotel Booking的应用。

本文中,我将集成定位服务,并介绍如何使用getLastlocation和getLocationWithAddress方法、如何使用回调方法,以及如何在Flutter中将数据存储到应用中的Shared Preferences。

定位服务

定位服务帮助开发者的应用快速准确地获取用户的位置,并通过GPS、Wi-Fi以及基站定位能力来扩展其全球定位能力。

融合定位:提供一套简单易用的API,以便您基于GPS、Wi-Fi以及基站位置数据来快速获取用户设备位置。

活动识别:通过加速度传感器、蜂窝网络信息以及磁力仪等识别用户的活动状态,帮助您根据用户行为调整应用。

地理围栏:您可以通过API来设置一个感兴趣的区域,以便在特定的动作(例如离开、进入或者逗留在该区域)发生时,您的应用可以接收到通知。

软件要求

  1. Android Studio 3.X
  2. JDK 1.8及以上
  3. SDK Platform 19及以上
  4. Gradle 4.6及以上

集成步骤

  1. 在AppGallery Connect中注册华为开发者账号。
  2. 参考“创建您的AGC项目”和“在项目下添加应用”章节创建应用。
  3. 根据当前位置来设置数据处理位置。
  4. 开通所需服务:华为定位服务。
  5. 生成签名证书指纹。
  6. 配置签名证书指纹。
  7. 将您的agconnect-services.json文件拷贝到您的应用级根目录下。

重要:添加应用时,输入的应用包名应与您的Flutter项目包名一致。

注意:下载agconnect-services.json文件前,确保已开启所需的HMS服务。

开发流程

在Android Studio中创建应用。

  1. 创建Flutter项目。
  2. 添加编译依赖。

a) 应用级Gradle依赖:

在项目中选择“Android > app > build.gradle”。
apply plugin: \'com.android.application\' apply plugin: \'com.huawei.agconnect\'

b) 项目级Gradle依赖:

maven {url \'https://developer.huawei.com/repo/\'}
classpath \'com.huawei.agconnect:agcp:1.4.1.300\'

在AndroidManifest.xml文件中添加如下权限:

<uses-permission android:name="android.permission.INTERNET" />
 <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
 <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
 <uses-permission android:name="android.permission.ACTIVITY_RECOGNITION" />
 <uses-permission android:name="com.huawei.hms.permission.ACTIVITY_RECOGNITION" />
  1. 参考链接下载所需的跨平台插件。
  2. 完成上述所有步骤后,在pubspec.yaml文件中添加对所需的HMS服务对应的Flutter插件的依赖。您可在pub.dev中找到最新版本的插件。
dependencies:
   flutter:
     sdk: flutter
   shared_preferences: ^0.5.12+4
   bottom_navy_bar: ^5.6.0
   cupertino_icons: ^1.0.0
   provider: ^4.3.3
 
huawei_location:
   path: ../huawei_location/
 
 flutter:
   uses-material-design: true
   assets:
     - assets/images/
  1. 添加后,执行flutter pub get命令。至此,所有的插件已准备就绪。
  2. 打开main.dart文件来创建UI和业务逻辑。

集成定位服务

权限

首先,应用需要有访问位置数据和物理数据的权限。

创建PermissionHandler实例,并调用initState()方法来初始化实例。

final PermissionHandler permissionHandler;
@override
 void initState() {
 permissionHandler = PermissionHandler(); super.initState();
 }

检查权限

调用hasLocationPermission()方法来检查设备是否有所需的权限。

void hasPermission() async {
   try {
     final bool status = await permissionHandler.hasLocationPermission();
     if(status == true){
     showToast("Has permission: $status");
     }else{
       requestPermission();
     }
   } on PlatformException catch (e) {
     showToast(e.toString());
   }
 }

如果设备没有所需权限,调用requestLocationPermission()方法来申请相关权限。

void requestPermission() async {
   try {
     final bool status = await permissionHandler.requestLocationPermission();
     showToast("Is permission granted");
   } on PlatformException catch (e) {
     showToast(e.toString());
   }
 }

融合定位

使用init()方法创建FusedLocationPrvoiderClient实例,然后使用该实例调用定位API。

final FusedLocationProviderClient locationService
 
@override
 void initState() {
 locationService = FusedLocationProviderClient(); super.initState();
 }

位置更新事件

调用onLocationData()方法来侦听位置更新事件。

StreamSubscription<Location> streamSubscription
 @override
 void initState() {
 streamSubscription = locationService.onLocationData.listen((location) {});super.initState();
 }

getLastLocation()

void getLastLocation() async {
   try {
     Location location = await locationService.getLastLocation();
     setState(() {
       lastlocation = location.toString();
       print("print: " + lastlocation);
     });
   } catch (e) {
     setState(() {
       print("error: " + e.toString());
     });
   }
 }

getLastLocationWithAddress()

创建LocationRequest实例,并设置相关参数。

final LocationRequest locationRequest;
locationRequest = LocationRequest()
   ..needAddress = true
   ..interval = 5000;
 
void _getLastLocationWithAddress() async {
   try {
     HWLocation location =
         await locationService.getLastLocationWithAddress(locationRequest);
     setState(() {
       String street = location.street;
       String city = location.city;
       String countryname = location.countryName;
       currentAddress = \'$street\' + \',\' + \'$city\' + \' , \' + \'$countryname\';
       print("res: $location");
     });
     showToast(currentAddress);
   } on PlatformException catch (e) {
     showToast(e.toString());
   }
 }

通过Callback进行位置更新

创建LocationCallback实例,并在initstate()中创建回调函数。

LocationCallback locationCallback;
@override
 void initState() {
   locationCallback = LocationCallback(
     onLocationResult: _onCallbackResult,
     onLocationAvailability: _onCallbackResult,
   );
   super.initState();
 }
 
void requestLocationUpdatesCallback() async {
   if (_callbackId == null) {
     try {
       final int callbackId = await locationService.requestLocationUpdatesExCb(
           locationRequest, locationCallback);
       _callbackId = callbackId;
     } on PlatformException catch (e) {
       showToast(e.toString());
     }
   } else {
     showToast("Already requested location updates.");
   }
 }
 
 void onCallbackResult(result) {
   print(result.toString());
   showToast(result.toString());
 }

我创建了一个Helper类,用于通过Shared Preferences在本地存储用户登录信息。

class StorageUtil {
   static StorageUtil _storageUtil;
   static SharedPreferences _preferences;
 
   static Future<StorageUtil> getInstance() async {
     if (_storageUtil == null) {
       var secureStorage = StorageUtil._();
       await secureStorage._init();
       _storageUtil = secureStorage;
     }
     return _storageUtil;
   }
 
   StorageUtil._();
 
   Future _init() async {
     _preferences = await SharedPreferences.getInstance();
   }
 
   // get string
   static String getString(String key) {
     if (_preferences == null) return null;
     String result = _preferences.getString(key) ?? null;
     print(\'result,$result\');
     return result;
   }
 
   // put string
   static Future<void> putString(String key, String value) {
     if (_preferences == null) return null;
     print(\'result $value\');
     return _preferences.setString(key, value);
   }
 }

结果

温馨提示

  1. 请下载最新版本的HMS服务Flutter插件。
  2. 如需使用模拟位置功能,需要在AndroidManifest.xml文件中添加相关权限。
  3. 如需更新插件,可点击pug get按钮。

欲了解HMS Core更多详情,请参阅:
华为开发者联盟官网
获取开发指导文档
参与开发者讨论请到CSDN社区或者Reddit社区
下载demo和示例代码请到Github或者Gitee
解决集成问题请到Stack Overflow

原文链接:https://developer.huawei.com/...
原作者:胡椒

以上是关于jquery查找字符串,并且定位到字符串所在位置的主要内容,如果未能解决你的问题,请参考以下文章

WPF中RichTextBox的定位问题。如何使光标定位到与指定关键字所在的位置?

Delphi通过查找字符定位TADOQuery数据的位置

c语言 查找最大元素

oracle怎样查找某个字符所在字符串第n次出现的位置

锚点定位不准确,怎么解决。

如果找到pdf文档上,某个字的坐标